Merge origin/master

This commit is contained in:
LevelX2 2015-06-13 23:05:13 +02:00
commit 7a54d5364c
86 changed files with 3383 additions and 275 deletions

View file

@ -739,14 +739,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient {
}
public void setUserPrefsToConnection(Connection connection) {
int avatarId = PreferencesDialog.getSelectedAvatar();
connection.setAvatarId(avatarId);
boolean showAbilityPickerForced = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_SHOW_ABILITY_PICKER_FORCED, "true").equals("true");
connection.setShowAbilityPickerForced(showAbilityPickerForced);
connection.setAllowRequestShowHandCards(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GAME_ALLOW_REQUEST_SHOW_HAND_CARDS, "true").equals("true"));
connection.setConfirmEmptyManaPool(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GAME_CONFIRM_EMPTY_MANA_POOL, "true").equals("true"));
connection.setUserSkipPrioritySteps(PreferencesDialog.getUserSkipPrioritySteps());
connection.setFlagName(MageFrame.getPreferences().get(KEY_CONNECT_FLAG, "world.png"));
connection.setUserData(PreferencesDialog.getUserData());
}
/**

View file

@ -96,7 +96,7 @@
<Component class="javax.swing.JTable" name="jTablePlayers">
<Properties>
<Property name="model" type="javax.swing.table.TableModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
<Connection code="this.tableModel" type="code"/>
<Connection code="this.userTableModel" type="code"/>
</Property>
<Property name="toolTipText" type="java.lang.String" value="Connected players"/>
<Property name="autoscrolls" type="boolean" value="false"/>

View file

@ -37,31 +37,25 @@ import java.awt.Color;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JTextField;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumnModel;
import mage.client.MageFrame;
import mage.client.dialog.PreferencesDialog;
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_USERS_COLUMNS_ORDER;
import static mage.client.dialog.PreferencesDialog.KEY_USERS_COLUMNS_WIDTH;
import mage.client.util.MageTableRowSorter;
import mage.client.util.gui.TableUtil;
import mage.client.util.gui.countryBox.CountryCellRenderer;
import mage.remote.MageRemoteException;
import mage.remote.Session;
import mage.view.ChatMessage.MessageColor;
import mage.view.ChatMessage.MessageType;
import mage.view.RoomUsersView;
import mage.view.UsersView;
import org.apache.log4j.Logger;
import org.mage.card.arcane.ManaSymbols;
/**
@ -70,12 +64,10 @@ import org.mage.card.arcane.ManaSymbols;
*/
public class ChatPanel extends javax.swing.JPanel {
private static final Logger logger = Logger.getLogger(ChatPanel.class);
private UUID chatId;
private Session session;
private final List<String> players = new ArrayList<>();
private final TableModel tableModel;
private final UserTableModel userTableModel;
/**
* Chat message color for opponents.
*/
@ -153,14 +145,15 @@ public class ChatPanel extends javax.swing.JPanel {
* @param addPlayersTab
*/
public ChatPanel(boolean addPlayersTab) {
tableModel = new TableModel();
userTableModel = new UserTableModel();
initComponents();
setBackground(new Color(0, 0, 0, ALPHA));
jTablePlayers.setBackground(new Color(0, 0, 0, ALPHA));
jTablePlayers.setForeground(Color.white);
jTablePlayers.setRowSorter(new MageTableRowSorter(tableModel));
jTablePlayers.setRowSorter(new MageTableRowSorter(userTableModel));
TableUtil.setColumnWidthAndOrder(jTablePlayers, defaultColumnsWidth, KEY_USERS_COLUMNS_WIDTH, KEY_USERS_COLUMNS_ORDER);
jTablePlayers.setDefaultRenderer(Icon.class, new CountryCellRenderer());
if (jScrollPaneTxt != null) {
jScrollPaneTxt.setBackground(new Color(0, 0, 0, ALPHA));
@ -331,13 +324,10 @@ public class ChatPanel extends javax.swing.JPanel {
return this.jSplitPane1.getDividerLocation();
}
class TableModel extends AbstractTableModel {
class UserTableModel extends AbstractTableModel {
private final String[] columnNames = new String[]{" ","Players", "Info", "Games", "Connection"};
private UsersView[] players = new UsersView[0];
private Map<String, ImageIcon> flagIconCache = new HashMap<>();
public void loadData(Collection<RoomUsersView> roomUserInfoList) throws MageRemoteException {
RoomUsersView roomUserInfo = roomUserInfoList.iterator().next();
@ -368,7 +358,7 @@ public class ChatPanel extends javax.swing.JPanel {
public Object getValueAt(int arg0, int arg1) {
switch (arg1) {
case 0:
return getCountryFlagIcon(players[arg0].getFlagName());
return players[arg0].getFlagName();
case 1:
return players[arg0].getUserName();
case 2:
@ -407,18 +397,7 @@ public class ChatPanel extends javax.swing.JPanel {
return false;
}
private ImageIcon getCountryFlagIcon(String countryCode) {
ImageIcon flagIcon = flagIconCache.get(countryCode);
if (flagIcon == null) {
flagIcon = new javax.swing.ImageIcon(getClass().getResource("/flags/" + countryCode +".png"));
if (flagIcon.getImage() == null) {
logger.warn("Country flag resource not found: " + countryCode);
} else {
flagIconCache.put(countryCode, flagIcon);
}
}
return flagIcon;
}
}
@ -460,7 +439,7 @@ public class ChatPanel extends javax.swing.JPanel {
jScrollPanePlayers.setBorder(null);
jTablePlayers.setModel(this.tableModel);
jTablePlayers.setModel(this.userTableModel);
jTablePlayers.setToolTipText("Connected players");
jTablePlayers.setAutoscrolls(false);
jTablePlayers.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
@ -528,7 +507,7 @@ public class ChatPanel extends javax.swing.JPanel {
public void setRoomUserInfo(List<Collection<RoomUsersView>> view) {
try {
tableModel.loadData(view.get(0));
userTableModel.loadData(view.get(0));
} catch (Exception ex) {
this.players.clear();
}

View file

@ -82,10 +82,10 @@
<EmptySpace max="-2" attributes="0"/>
<Component id="main_card" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="main_game" min="-2" max="-2" attributes="0"/>
<Component id="main_game" pref="189" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="main_gamelog" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="40" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
@ -201,12 +201,7 @@
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Component id="cbAllowRequestToShowHandCards" min="-2" pref="546" max="-2" attributes="0"/>
<EmptySpace max="32767" attributes="0"/>
</Group>
<Group type="102" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="103" groupAlignment="1" max="-2" attributes="0">
<Component id="showPlayerNamesPermanently" alignment="0" max="32767" attributes="0"/>
<Component id="nonLandPermanentsInOnePile" alignment="0" max="32767" attributes="0"/>
@ -214,10 +209,9 @@
</Group>
<Component id="cbShowStormCounter" alignment="0" min="-2" pref="546" max="-2" attributes="0"/>
<Component id="cbConfirmEmptyManaPool" alignment="0" min="-2" pref="546" max="-2" attributes="0"/>
<Component id="cbAskMoveToGraveOrder" alignment="0" min="-2" pref="546" max="-2" attributes="0"/>
</Group>
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
</Group>
</Group>
<EmptySpace max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
@ -235,6 +229,9 @@
<Component id="cbShowStormCounter" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="cbConfirmEmptyManaPool" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="cbAskMoveToGraveOrder" min="-2" max="-2" attributes="0"/>
<EmptySpace max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
@ -307,6 +304,17 @@
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cbConfirmEmptyManaPoolActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JCheckBox" name="cbAskMoveToGraveOrder">
<Properties>
<Property name="selected" type="boolean" value="true"/>
<Property name="text" type="java.lang.String" value="Ask player for setting order cards go to graveyard"/>
<Property name="toolTipText" type="java.lang.String" value="&lt;html&gt;If activated and multiple cards go to the graveyard at the same time&lt;br&gt;&#xa;the player is asked to set the order of the cards."/>
<Property name="horizontalAlignment" type="int" value="2"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cbAskMoveToGraveOrderActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="main_gamelog">

View file

@ -66,6 +66,7 @@ import mage.client.util.gui.BufferedImageBuilder;
import mage.players.net.UserSkipPrioritySteps;
import mage.remote.Connection;
import mage.remote.Connection.ProxyType;
import mage.view.UserDataView;
import org.apache.log4j.Logger;
/**
@ -86,6 +87,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
public static final String KEY_GAME_ALLOW_REQUEST_SHOW_HAND_CARDS = "gameAllowRequestShowHandCards";
public static final String KEY_GAME_SHOW_STORM_COUNTER = "gameShowStormCounter";
public static final String KEY_GAME_CONFIRM_EMPTY_MANA_POOL = "gameConfirmEmptyManaPool";
public static final String KEY_GAME_ASK_MOVE_TO_GRAVE_ORDER = "gameAskMoveToGraveORder";
public static final String KEY_GAME_LOG_AUTO_SAVE = "gameLogAutoSave";
@ -346,6 +348,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
cbAllowRequestToShowHandCards = new javax.swing.JCheckBox();
cbShowStormCounter = new javax.swing.JCheckBox();
cbConfirmEmptyManaPool = new javax.swing.JCheckBox();
cbAskMoveToGraveOrder = new javax.swing.JCheckBox();
main_gamelog = new javax.swing.JPanel();
cbGameLogAutoSave = new javax.swing.JCheckBox();
tabPhases = new javax.swing.JPanel();
@ -570,6 +573,16 @@ public class PreferencesDialog extends javax.swing.JDialog {
}
});
cbAskMoveToGraveOrder.setSelected(true);
cbAskMoveToGraveOrder.setText("Ask player for setting order cards go to graveyard");
cbAskMoveToGraveOrder.setToolTipText("<html>If activated and multiple cards go to the graveyard at the same time<br>\nthe player is asked to set the order of the cards.");
cbAskMoveToGraveOrder.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
cbAskMoveToGraveOrder.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
cbAskMoveToGraveOrderActionPerformed(evt);
}
});
javax.swing.GroupLayout main_gameLayout = new javax.swing.GroupLayout(main_game);
main_game.setLayout(main_gameLayout);
main_gameLayout.setHorizontalGroup(
@ -577,18 +590,15 @@ public class PreferencesDialog extends javax.swing.JDialog {
.addGroup(main_gameLayout.createSequentialGroup()
.addContainerGap()
.addGroup(main_gameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(main_gameLayout.createSequentialGroup()
.addComponent(cbAllowRequestToShowHandCards, javax.swing.GroupLayout.PREFERRED_SIZE, 546, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(main_gameLayout.createSequentialGroup()
.addGroup(main_gameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(main_gameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(showPlayerNamesPermanently, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(nonLandPermanentsInOnePile, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(showAbilityPickerForced, javax.swing.GroupLayout.Alignment.LEADING))
.addComponent(cbShowStormCounter, javax.swing.GroupLayout.PREFERRED_SIZE, 546, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(cbConfirmEmptyManaPool, javax.swing.GroupLayout.PREFERRED_SIZE, 546, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, Short.MAX_VALUE))))
.addComponent(cbConfirmEmptyManaPool, javax.swing.GroupLayout.PREFERRED_SIZE, 546, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(cbAskMoveToGraveOrder, javax.swing.GroupLayout.PREFERRED_SIZE, 546, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
main_gameLayout.setVerticalGroup(
main_gameLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@ -603,7 +613,10 @@ public class PreferencesDialog extends javax.swing.JDialog {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cbShowStormCounter)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cbConfirmEmptyManaPool))
.addComponent(cbConfirmEmptyManaPool)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cbAskMoveToGraveOrder)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
nonLandPermanentsInOnePile.getAccessibleContext().setAccessibleName("nonLandPermanentsInOnePile");
@ -651,10 +664,10 @@ public class PreferencesDialog extends javax.swing.JDialog {
.addContainerGap()
.addComponent(main_card, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(main_game, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(main_game, javax.swing.GroupLayout.PREFERRED_SIZE, 189, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(main_gamelog, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(40, Short.MAX_VALUE))
.addContainerGap())
);
main_card.getAccessibleContext().setAccessibleName("Game panel");
@ -1626,7 +1639,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(exitButton, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
.addComponent(tabsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 595, Short.MAX_VALUE)
.addComponent(tabsPanel)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@ -1655,6 +1668,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
save(prefs, dialog.cbAllowRequestToShowHandCards, KEY_GAME_ALLOW_REQUEST_SHOW_HAND_CARDS, "true", "false", UPDATE_CACHE_POLICY);
save(prefs, dialog.cbShowStormCounter, KEY_GAME_SHOW_STORM_COUNTER, "true", "false", UPDATE_CACHE_POLICY);
save(prefs, dialog.cbConfirmEmptyManaPool, KEY_GAME_CONFIRM_EMPTY_MANA_POOL, "true", "false", UPDATE_CACHE_POLICY);
save(prefs, dialog.cbAskMoveToGraveOrder, KEY_GAME_ASK_MOVE_TO_GRAVE_ORDER, "true", "false", UPDATE_CACHE_POLICY);
save(prefs, dialog.cbGameLogAutoSave, KEY_GAME_LOG_AUTO_SAVE, "true", "false", UPDATE_CACHE_POLICY);
// Phases
@ -1717,13 +1731,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
}
try {
MageFrame.getSession().updatePreferencesForServer(
getSelectedAvatar(),
dialog.showAbilityPickerForced.isSelected(),
dialog.cbAllowRequestToShowHandCards.isSelected(),
dialog.cbConfirmEmptyManaPool.isSelected(),
getUserSkipPrioritySteps(),
MageFrame.getPreferences().get(KEY_CONNECT_FLAG, "world.png"));
MageFrame.getSession().updatePreferencesForServer(getUserData());
prefs.flush();
} catch (BackingStoreException ex) {
@ -1978,6 +1986,10 @@ public class PreferencesDialog extends javax.swing.JDialog {
// TODO add your handling code here:
}//GEN-LAST:event_cbConfirmEmptyManaPoolActionPerformed
private void cbAskMoveToGraveOrderActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbAskMoveToGraveOrderActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_cbAskMoveToGraveOrderActionPerformed
private void showProxySettings() {
if (cbProxyType.getSelectedItem() == Connection.ProxyType.SOCKS) {
this.pnlProxy.setVisible(true);
@ -2055,6 +2067,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
load(prefs, dialog.cbAllowRequestToShowHandCards, KEY_GAME_ALLOW_REQUEST_SHOW_HAND_CARDS, "true");
load(prefs, dialog.cbShowStormCounter, KEY_GAME_SHOW_STORM_COUNTER, "true");
load(prefs, dialog.cbConfirmEmptyManaPool, KEY_GAME_CONFIRM_EMPTY_MANA_POOL, "true");
load(prefs, dialog.cbAskMoveToGraveOrder, KEY_GAME_ASK_MOVE_TO_GRAVE_ORDER, "true");
load(prefs, dialog.cbGameLogAutoSave, KEY_GAME_LOG_AUTO_SAVE, "true");
@ -2395,26 +2408,32 @@ public class PreferencesDialog extends javax.swing.JDialog {
public void mousePressed(MouseEvent e) {
if (selectedAvatarId != id) {
setSelectedId(id);
MageFrame.getSession().updatePreferencesForServer(
id,
PreferencesDialog.getCachedValue(PreferencesDialog.KEY_SHOW_TOOLTIPS_ANY_ZONE, "true").equals("true"),
PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GAME_ALLOW_REQUEST_SHOW_HAND_CARDS, "true").equals("true"),
PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GAME_CONFIRM_EMPTY_MANA_POOL, "true").equals("true"),
getUserSkipPrioritySteps(),
MageFrame.getPreferences().get(KEY_CONNECT_FLAG, "world.png")
);
MageFrame.getSession().updatePreferencesForServer(getUserData());
}
}
});
}
}
public static UserDataView getUserData(){
return new UserDataView(
getSelectedAvatar(),
PreferencesDialog.getCachedValue(PreferencesDialog.KEY_SHOW_TOOLTIPS_ANY_ZONE, "true").equals("true"),
PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GAME_ALLOW_REQUEST_SHOW_HAND_CARDS, "true").equals("true"),
PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GAME_CONFIRM_EMPTY_MANA_POOL, "true").equals("true"),
getUserSkipPrioritySteps(),
MageFrame.getPreferences().get(KEY_CONNECT_FLAG, "world.png"),
PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GAME_ASK_MOVE_TO_GRAVE_ORDER, "true").equals("true")
);
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton btnBattlefieldBGMBrowse;
private javax.swing.JButton btnBrowseBackgroundImage;
private javax.swing.JButton btnBrowseBattlefieldImage;
private javax.swing.JButton btnBrowseImageLocation;
private javax.swing.JCheckBox cbAllowRequestToShowHandCards;
private javax.swing.JCheckBox cbAskMoveToGraveOrder;
private javax.swing.JCheckBox cbCheckForNewImages;
private javax.swing.JCheckBox cbConfirmEmptyManaPool;
private javax.swing.JCheckBox cbEnableBattlefieldBGM;

View file

@ -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.client.util.gui.countryBox;
import java.awt.Component;
import java.util.HashMap;
import java.util.Map;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import mage.client.chat.ChatPanel;
import org.apache.log4j.Logger;
/**
*
* @author LevelX2
*/
public class CountryCellRenderer extends DefaultTableCellRenderer {
private static final Logger logger = Logger.getLogger(CountryCellRenderer.class);
private final Map<String, ImageIcon> flagIconCache = new HashMap<>();
private final Map<String, String> countryMap = new HashMap<>();
public CountryCellRenderer() {
for( int i = 0; i <= CountryComboBox.countryList.length - 1; i++) {
countryMap.put(CountryComboBox.countryList[i][1],CountryComboBox.countryList[i][0]);
}
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JLabel label = (JLabel)super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if(column == 0) {
label.setToolTipText(countryMap.get((String)value));
label.setIcon(getCountryFlagIcon((String)value));
label.setText("");
}
return label;
}
private ImageIcon getCountryFlagIcon(String countryCode) {
ImageIcon flagIcon = flagIconCache.get(countryCode);
if (flagIcon == null) {
flagIcon = new javax.swing.ImageIcon(getClass().getResource("/flags/" + countryCode +".png"));
if (flagIcon.getImage() == null) {
logger.warn("Country flag resource not found: " + countryCode);
} else {
flagIconCache.put(countryCode, flagIcon);
}
}
return flagIcon;
}
}

View file

@ -29,7 +29,7 @@ public class ConstructedFormats {
public static final String MODERN = "- Modern";
private static final Map<String, List<String>> underlyingSetCodesPerFormat = new HashMap<>();
private static final List<String> formats = new ArrayList<String>();
private static final List<String> formats = new ArrayList<>();
private ConstructedFormats() {
}
@ -59,7 +59,7 @@ public class ConstructedFormats {
else {
cutoff = new GregorianCalendar(calendar.get(Calendar.YEAR) - 2, Calendar.SEPTEMBER, 1);
}
final Map<String, ExpansionInfo> expansionInfo = new HashMap<String, ExpansionInfo>();
final Map<String, ExpansionInfo> expansionInfo = new HashMap<>();
for (ExpansionInfo set : ExpansionRepository.instance.getAll()) {
expansionInfo.put(set.getName(), set);
formats.add(set.getName());

View file

@ -64,6 +64,6 @@ ddd=gvl
unh=uh
dde=pvc
# Remove setname as soon as the images can be downloaded
ignore.urls=TOK,MMB,ORI
ignore.urls=TOK,MMB
# sets ordered by release time (newest goes first)
token.lookup.order=TPR,MPRP,DD3,DDO,ORI,MMB,PTC,DTK,FRF,KTK,M15,VMA,CNS,JOU,BNG,THS,DDL,M14,MMA,DGM,GTC,RTR,M13,AVR,DDI,DKA,ISD,M12,NPH,MBS,SOM,M11,ROE,DDE,WWK,ZEN,M10,GVL,ARB,DVD,CFX,JVC,ALA,EVE,SHM,EVG,MOR,LRW,10E,CLS,CHK,GRC

View file

@ -35,6 +35,7 @@ import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import mage.players.net.UserSkipPrioritySteps;
import mage.view.UserDataView;
/**
*
@ -54,12 +55,14 @@ public class Connection {
private int clientCardDatabaseVersion;
private boolean forceDBComparison;
private int avatarId;
private boolean showAbilityPickerForced;
private boolean allowRequestShowHandCards;
private boolean confirmEmptyManaPool;
private String flagName;
private UserSkipPrioritySteps userSkipPrioritySteps;
private UserDataView userData;
// private int avatarId;
// private boolean showAbilityPickerForced;
// private boolean allowRequestShowHandCards;
// private boolean confirmEmptyManaPool;
// private String flagName;
// private UserSkipPrioritySteps userSkipPrioritySteps;
private static final String serialization = "?serializationtype=jboss";
private static final String transport = "bisocket";
@ -221,45 +224,12 @@ public class Connection {
return null;
}
public int getAvatarId() {
return avatarId;
public void setUserData(UserDataView userData) {
this.userData= userData;
}
public void setAvatarId(int avatarId) {
this.avatarId = avatarId;
}
public boolean isShowAbilityPickerForced() {
return showAbilityPickerForced;
}
public void setShowAbilityPickerForced(boolean showAbilityPickerForced) {
this.showAbilityPickerForced = showAbilityPickerForced;
}
public boolean allowRequestShowHandCards() {
return allowRequestShowHandCards;
}
public void setAllowRequestShowHandCards(boolean allowRequestShowHandCards) {
this.allowRequestShowHandCards = allowRequestShowHandCards;
}
public boolean confirmEmptyManaPool() {
return confirmEmptyManaPool;
}
public void setConfirmEmptyManaPool(boolean confirmEmptyManaPool) {
this.confirmEmptyManaPool = confirmEmptyManaPool;
}
public UserSkipPrioritySteps getUserSkipPrioritySteps() {
return userSkipPrioritySteps;
}
public void setUserSkipPrioritySteps(UserSkipPrioritySteps userSkipPrioritySteps) {
this.userSkipPrioritySteps = userSkipPrioritySteps;
public UserDataView getUserData() {
return userData;
}
public boolean isForceDBComparison() {
@ -269,13 +239,4 @@ public class Connection {
public void setForceDBComparison(boolean forceDBComparison) {
this.forceDBComparison = forceDBComparison;
}
public String getFlagName() {
return flagName;
}
public void setFlagName(String flagName) {
this.flagName = flagName;
}
}

View file

@ -275,16 +275,10 @@ public class SessionImpl implements Session {
this.sessionId = callbackClient.getSessionId();
boolean registerResult;
if (connection.getPassword() == null) {
UserDataView userDataView = new UserDataView(connection.getAvatarId(),
connection.isShowAbilityPickerForced(),
connection.allowRequestShowHandCards(),
connection.confirmEmptyManaPool(),
connection.getUserSkipPrioritySteps(),
connection.getFlagName());
// for backward compatibility. don't remove twice call - first one does nothing but for version checking
registerResult = server.registerClient(connection.getUsername(), sessionId, client.getVersion());
if (registerResult) {
server.setUserData(connection.getUsername(), sessionId, userDataView);
server.setUserData(connection.getUsername(), sessionId, connection.getUserData());
}
} else {
registerResult = server.registerAdmin(connection.getPassword(), sessionId, client.getVersion());
@ -1397,11 +1391,10 @@ public class SessionImpl implements Session {
}
@Override
public boolean updatePreferencesForServer(int avatarId, boolean showAbilityPickerForced, boolean allowRequestShowHandCards, boolean confirmEmptyManaPool, UserSkipPrioritySteps userSkipPrioritySteps, String flagName) {
public boolean updatePreferencesForServer(UserDataView userData) {
try {
if (isConnected()) {
UserDataView userDataView = new UserDataView(avatarId, showAbilityPickerForced, allowRequestShowHandCards, confirmEmptyManaPool, userSkipPrioritySteps, flagName);
server.setUserData(connection.getUsername(), sessionId, userDataView);
server.setUserData(connection.getUsername(), sessionId, userData);
}
return true;
} catch (MageException ex) {

View file

@ -27,7 +27,7 @@
*/
package mage.remote.interfaces;
import mage.players.net.UserSkipPrioritySteps;
import mage.view.UserDataView;
/**
* @author noxx
@ -36,5 +36,5 @@ public interface ClientData {
String getUserName();
boolean updatePreferencesForServer(int avatarId, boolean showAbilityPickerForced, boolean allowRequestShowHandCards, boolean confirmEmptyManaPool, UserSkipPrioritySteps userSkipPrioritySteps, String flagName);
boolean updatePreferencesForServer(UserDataView userData);
}

View file

@ -115,7 +115,7 @@ public class PlayerView implements Serializable {
if (player.getUserData() != null) {
this.userDataView = new UserDataView(player.getUserData());
} else {
this.userDataView = new UserDataView(0, false, false, true, null,"world.png");
this.userDataView = UserDataView.getDefaultUserDataView();
}
for (CommandObject commandObject : game.getState().getCommand()) {

View file

@ -18,15 +18,22 @@ public class UserDataView implements Serializable {
protected boolean confirmEmptyManaPool;
protected UserSkipPrioritySteps userSkipPrioritySteps;
String flagName;
protected boolean askMoveToGraveOrder;
static UserDataView getDefaultUserDataView() {
return new UserDataView(0, false, false, true, null,"world.png", false);
}
public UserDataView(int avatarId, boolean showAbilityPickerForced, boolean allowRequestShowHandCards,
boolean confirmEmptyManaPool, UserSkipPrioritySteps userSkipPrioritySteps, String flagName) {
boolean confirmEmptyManaPool, UserSkipPrioritySteps userSkipPrioritySteps, String flagName, boolean askMoveToGraveOrder) {
this.avatarId = avatarId;
this.showAbilityPickerForced = showAbilityPickerForced;
this.allowRequestShowHandCards = allowRequestShowHandCards;
this.userSkipPrioritySteps = userSkipPrioritySteps;
this.confirmEmptyManaPool = confirmEmptyManaPool;
this.flagName = flagName;
this.askMoveToGraveOrder = askMoveToGraveOrder;
}
public UserDataView(UserData userData) {
@ -37,6 +44,7 @@ public class UserDataView implements Serializable {
this.userSkipPrioritySteps = userData.getUserSkipPrioritySteps();
this.confirmEmptyManaPool = userData.confirmEmptyManaPool();
this.flagName = userData.getFlagName();
this.askMoveToGraveOrder = userData.askMoveToGraveOrder();
}
public int getAvatarId() {
@ -63,4 +71,8 @@ public class UserDataView implements Serializable {
return flagName;
}
public boolean askMoveToGraveOrder() {
return askMoveToGraveOrder;
}
}

View file

@ -175,7 +175,7 @@ public class ComputerPlayer extends PlayerImpl implements Player {
public ComputerPlayer(String name, RangeOfInfluence range) {
super(name, range);
human = false;
userData = new UserData(UserGroup.COMPUTER, 64, false, true, false, null, "Computer.png");
userData = new UserData(UserGroup.COMPUTER, 64, false, true, false, null, "Computer.png", false);
pickedCards = new ArrayList<>();
}

View file

@ -142,7 +142,7 @@ public class Session {
if (user == null) {
user = UserManager.getInstance().findUser("Admin");
}
user.setUserData(new UserData(UserGroup.ADMIN, 0, false, false, false, null, "world.png"));
user.setUserData(new UserData(UserGroup.ADMIN, 0, false, false, false, null, "world.png", false));
if (!UserManager.getInstance().connectToSession(sessionId, user.getId())) {
logger.info("Error connecting Admin!");
}
@ -157,7 +157,7 @@ public class Session {
userData = new UserData(UserGroup.PLAYER, userDataView.getAvatarId(),
userDataView.isShowAbilityPickerForced(), userDataView.allowRequestShowHandCards(),
userDataView.confirmEmptyManaPool(), userDataView.getUserSkipPrioritySteps(),
userDataView.getFlagName());
userDataView.getFlagName(), userDataView.askMoveToGraveOrder());
user.setUserData(userData);
} else {
if (userDataView.getAvatarId() == 51) { // Update special avatar if first avatar is selected
@ -168,6 +168,7 @@ public class Session {
userData.setAllowRequestShowHandCards(userDataView.allowRequestShowHandCards());
userData.setUserSkipPrioritySteps(userDataView.getUserSkipPrioritySteps());
userData.setConfirmEmptyManaPool(userDataView.confirmEmptyManaPool());
userData.setAskMoveToGraveOrder(userDataView.askMoveToGraveOrder());
}
return true;
}

View file

@ -36,6 +36,8 @@ import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CopyEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.Cards;
import mage.cards.CardsImpl;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
@ -94,32 +96,34 @@ class TheMimeoplasmEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
Player controller = game.getPlayer(source.getControllerId());
Permanent permanent = game.getPermanent(source.getSourceId());
if (player != null && permanent != null) {
if (controller != null && permanent != null) {
if (new CardsInAllGraveyardsCount(new FilterCreatureCard()).calculate(game, source, this) >= 2) {
if (player.chooseUse(Outcome.Benefit, "Do you want to exile two creature cards from graveyards?", game)) {
if (controller.chooseUse(Outcome.Benefit, "Do you want to exile two creature cards from graveyards?", game)) {
TargetCardInGraveyard targetCopy = new TargetCardInGraveyard(new FilterCreatureCard("creature card to become a copy of"));
TargetCardInGraveyard targetCounters = new TargetCardInGraveyard(new FilterCreatureCard("creature card for additional +1/+1 counters"));
if (player.choose(Outcome.Copy, targetCopy, source.getSourceId(), game)) {
TargetCardInGraveyard targetCounters = new TargetCardInGraveyard(new FilterCreatureCard("creature card to determine amount of additional +1/+1 counters"));
if (controller.choose(Outcome.Copy, targetCopy, source.getSourceId(), game)) {
Card cardToCopy = game.getCard(targetCopy.getFirstTarget());
if (cardToCopy != null) {
player.moveCardToExileWithInfo(cardToCopy, null, "", source.getSourceId(), game, Zone.GRAVEYARD, true);
if (player.choose(Outcome.Copy, targetCounters, source.getSourceId(), game)) {
if (controller.choose(Outcome.Copy, targetCounters, source.getSourceId(), game)) {
Card cardForCounters = game.getCard(targetCounters.getFirstTarget());
if (cardForCounters != null) {
player.moveCardToExileWithInfo(cardForCounters, null, "", source.getSourceId(), game, Zone.GRAVEYARD, true);
Cards cardsToExile = new CardsImpl();
cardsToExile.add(cardToCopy);
cardsToExile.add(cardForCounters);
controller.moveCards(cardsToExile, Zone.GRAVEYARD, Zone.EXILED, source, game);
CopyEffect copyEffect = new CopyEffect(Duration.Custom, cardToCopy, source.getSourceId());
game.addEffect(copyEffect, source);
permanent.addCounters(CounterType.P1P1.createInstance(cardForCounters.getPower().getValue()), game);
}
}
}
}
}
}
return true;
}
}
}
}
}
}
}
return false;
}
}

View file

@ -67,7 +67,7 @@ public class BloodlineKeeper extends CardImpl {
this.secondSideCard = new LordOfLineage(ownerId);
this.addAbility(FlyingAbility.getInstance());
// {tap}: Put a 2/2 black Vampire creature token with flying onto the battlefield.
// {T}: Put a 2/2 black Vampire creature token with flying onto the battlefield.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new VampireToken()), new TapSourceCost()));
// {B}: Transform Bloodline Keeper. Activate this ability only if you control five or more Vampires.
this.addAbility(new TransformAbility());

View file

@ -29,7 +29,7 @@ package mage.sets.khansoftarkir;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.AttacksEachTurnStaticAbility;
import mage.abilities.common.AttacksEachCombatStaticAbility;
import mage.abilities.common.DiesAndDealtDamageThisTurnTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.MyTurnCondition;
@ -64,7 +64,7 @@ public class ZurgoHelmsmasher extends CardImpl {
// Haste
this.addAbility(HasteAbility.getInstance());
// Zurgo Helmsmasher attacks each combat if able.
this.addAbility(new AttacksEachTurnStaticAbility());
this.addAbility(new AttacksEachCombatStaticAbility());
// Zurgo Helmsmasher has indestructible as long as it's your turn.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new ConditionalContinuousEffect(new GainAbilitySourceEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield),

View file

@ -63,7 +63,7 @@ public class MaraudingMaulhorn extends CardImpl {
// Marauding Maulhorn attacks each combat if able unless you control a creature named Advocate of the Beast.
Effect effect = new ConditionalRequirementEffect(
new AttacksIfAbleSourceEffect(Duration.WhileOnBattlefield),
new AttacksIfAbleSourceEffect(Duration.WhileOnBattlefield, true),
new PermanentsOnTheBattlefieldCondition(filter, PermanentsOnTheBattlefieldCondition.CountType.FEWER_THAN, 1));
effect.setText("{this} attacks each combat if able unless you control a creature named Advocate of the Beast");

View file

@ -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.sets.magicorigins;
import java.util.UUID;
import mage.constants.Rarity;
/**
*
* @author LevelX2
*/
public class ActOfTreason extends mage.sets.magic2010.ActOfTreason {
public ActOfTreason(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
this.rarity = Rarity.COMMON;
}
public ActOfTreason(final ActOfTreason card) {
super(card);
}
@Override
public ActOfTreason copy() {
return new ActOfTreason(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class AegisAngel extends mage.sets.magic2012.AegisAngel {
public AegisAngel(UUID ownerId) {
super(ownerId);
this.cardNumber = 273;
this.expansionSetCode = "ORI";
}
public AegisAngel(final AegisAngel card) {
super(card);
}
@Override
public AegisAngel copy() {
return new AegisAngel(this);
}
}

View file

@ -0,0 +1,74 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets.magicorigins;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.Cost;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.target.common.TargetCreaturePermanent;
/**
*
* @author LevelX2
*/
public class AkroanJailer extends CardImpl {
public AkroanJailer(UUID ownerId) {
super(ownerId, 1, "Akroan Jailer", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{W}");
this.expansionSetCode = "ORI";
this.subtype.add("Human");
this.subtype.add("Soldier");
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// {2}{W}, {T}: Tap target creature.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new TapTargetEffect(), new ManaCostsImpl("{2}{W}"));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}
public AkroanJailer(final AkroanJailer card) {
super(card);
}
@Override
public AkroanJailer copy() {
return new AkroanJailer(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class BellowsLizard extends mage.sets.returntoravnica.BellowsLizard {
public BellowsLizard(UUID ownerId) {
super(ownerId);
this.cardNumber = 132;
this.expansionSetCode = "ORI";
}
public BellowsLizard(final BellowsLizard card) {
super(card);
}
@Override
public BellowsLizard copy() {
return new BellowsLizard(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class CatacombSlug extends mage.sets.returntoravnica.CatacombSlug {
public CatacombSlug(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public CatacombSlug(final CatacombSlug card) {
super(card);
}
@Override
public CatacombSlug copy() {
return new CatacombSlug(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class ChandrasFury extends mage.sets.magic2013.ChandrasFury {
public ChandrasFury(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public ChandrasFury(final ChandrasFury card) {
super(card);
}
@Override
public ChandrasFury copy() {
return new ChandrasFury(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class ChargingGriffin extends mage.sets.magic2014.ChargingGriffin {
public ChargingGriffin(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public ChargingGriffin(final ChargingGriffin card) {
super(card);
}
@Override
public ChargingGriffin copy() {
return new ChargingGriffin(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class Claustrophobia extends mage.sets.innistrad.Claustrophobia {
public Claustrophobia(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public Claustrophobia(final Claustrophobia card) {
super(card);
}
@Override
public Claustrophobia copy() {
return new Claustrophobia(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class Cobblebrute extends mage.sets.returntoravnica.Cobblebrute {
public Cobblebrute(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public Cobblebrute(final Cobblebrute card) {
super(card);
}
@Override
public Cobblebrute copy() {
return new Cobblebrute(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class CruelRevival extends mage.sets.onslaught.CruelRevival {
public CruelRevival(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public CruelRevival(final CruelRevival card) {
super(card);
}
@Override
public CruelRevival copy() {
return new CruelRevival(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class Disperse extends mage.sets.scarsofmirrodin.Disperse {
public Disperse(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public Disperse(final Disperse card) {
super(card);
}
@Override
public Disperse copy() {
return new Disperse(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class DivineVerdict extends mage.sets.magic2010.DivineVerdict {
public DivineVerdict(UUID ownerId) {
super(ownerId);
this.cardNumber = 274;
this.expansionSetCode = "ORI";
}
public DivineVerdict(final DivineVerdict card) {
super(card);
}
@Override
public DivineVerdict copy() {
return new DivineVerdict(this);
}
}

View file

@ -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.sets.magicorigins;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.VigilanceAbility;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
/**
*
* @author LevelX2
*/
public class EagleOfTheWatch extends CardImpl {
public EagleOfTheWatch(UUID ownerId) {
super(ownerId, 275, "Eagle of the Watch", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}");
this.expansionSetCode = "ORI";
this.subtype.add("Bird");
this.power = new MageInt(2);
this.toughness = new MageInt(1);
// Flying
this.addAbility(FlyingAbility.getInstance());
// Vigilance
this.addAbility(VigilanceAbility.getInstance());
}
public EagleOfTheWatch(final EagleOfTheWatch card) {
super(card);
}
@Override
public EagleOfTheWatch copy() {
return new EagleOfTheWatch(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class ElvishVisionary extends mage.sets.shardsofalara.ElvishVisionary {
public ElvishVisionary(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public ElvishVisionary(final ElvishVisionary card) {
super(card);
}
@Override
public ElvishVisionary copy() {
return new ElvishVisionary(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class FieryConclusion extends mage.sets.ravnica.FieryConclusion {
public FieryConclusion(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public FieryConclusion(final FieryConclusion card) {
super(card);
}
@Override
public FieryConclusion copy() {
return new FieryConclusion(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class FieryHellhound extends mage.sets.magic2010.FieryHellhound {
public FieryHellhound(UUID ownerId) {
super(ownerId);
this.cardNumber = 284;
this.expansionSetCode = "ORI";
}
public FieryHellhound(final FieryHellhound card) {
super(card);
}
@Override
public FieryHellhound copy() {
return new FieryHellhound(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class FleshToDust extends mage.sets.magic2015.FleshToDust {
public FleshToDust(UUID ownerId) {
super(ownerId);
this.cardNumber = 280;
this.expansionSetCode = "ORI";
}
public FleshToDust(final FleshToDust card) {
super(card);
}
@Override
public FleshToDust copy() {
return new FleshToDust(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class GoldForgedSentinel extends mage.sets.journeyintonyx.GoldForgedSentinel {
public GoldForgedSentinel(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public GoldForgedSentinel(final GoldForgedSentinel card) {
super(card);
}
@Override
public GoldForgedSentinel copy() {
return new GoldForgedSentinel(this);
}
}

View file

@ -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.sets.magicorigins;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
/**
*
* @author LevelX2
*/
public class HitchclawRecluse extends CardImpl {
public HitchclawRecluse(UUID ownerId) {
super(ownerId, 181, "Hitchclaw Recluse", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{G}");
this.expansionSetCode = "ORI";
this.subtype.add("Spider");
this.power = new MageInt(1);
this.toughness = new MageInt(4);
// Reach
this.addAbility(ReachAbility.getInstance());
}
public HitchclawRecluse(final HitchclawRecluse card) {
super(card);
}
@Override
public HitchclawRecluse copy() {
return new HitchclawRecluse(this);
}
}

View file

@ -0,0 +1,63 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets.magicorigins;
import java.util.UUID;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Rarity;
import mage.filter.common.FilterAttackingCreature;
/**
*
* @author LevelX2
*/
public class Hydrolash extends CardImpl {
public Hydrolash(UUID ownerId) {
super(ownerId, 59, "Hydrolash", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{2}{U}");
this.expansionSetCode = "ORI";
// Attacking creatures get -2/-0 until end of turn.
this.getSpellAbility().addEffect(new BoostAllEffect(-2, 0, Duration.EndOfTurn, new FilterAttackingCreature(), false));
// Draw a card.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
}
public Hydrolash(final Hydrolash card) {
super(card);
}
@Override
public Hydrolash copy() {
return new Hydrolash(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class IntoTheVoid extends mage.sets.avacynrestored.IntoTheVoid {
public IntoTheVoid(UUID ownerId) {
super(ownerId);
this.cardNumber = 277;
this.expansionSetCode = "ORI";
}
public IntoTheVoid(final IntoTheVoid card) {
super(card);
}
@Override
public IntoTheVoid copy() {
return new IntoTheVoid(this);
}
}

View file

@ -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.sets.magicorigins;
import java.util.UUID;
import mage.constants.Rarity;
/**
*
* @author LevelX2
*/
public class JayemdaeTome extends mage.sets.tenthedition.JayemdaeTome {
public JayemdaeTome(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
this.rarity = Rarity.UNCOMMON;
}
public JayemdaeTome(final JayemdaeTome card) {
super(card);
}
@Override
public JayemdaeTome copy() {
return new JayemdaeTome(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class LeafGilder extends mage.sets.lorwyn.LeafGilder {
public LeafGilder(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public LeafGilder(final LeafGilder card) {
super(card);
}
@Override
public LeafGilder copy() {
return new LeafGilder(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class MahamotiDjinn extends mage.sets.tenthedition.MahamotiDjinn {
public MahamotiDjinn(UUID ownerId) {
super(ownerId);
this.cardNumber = 278;
this.expansionSetCode = "ORI";
}
public MahamotiDjinn(final MahamotiDjinn card) {
super(card);
}
@Override
public MahamotiDjinn copy() {
return new MahamotiDjinn(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class MaritimeGuard extends mage.sets.magic2011.MaritimeGuard {
public MaritimeGuard(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public MaritimeGuard(final MaritimeGuard card) {
super(card);
}
@Override
public MaritimeGuard copy() {
return new MaritimeGuard(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class Meteorite extends mage.sets.magic2015.Meteorite {
public Meteorite(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public Meteorite(final Meteorite card) {
super(card);
}
@Override
public Meteorite copy() {
return new Meteorite(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class MightyLeap extends mage.sets.magic2011.MightyLeap {
public MightyLeap(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public MightyLeap(final MightyLeap card) {
super(card);
}
@Override
public MightyLeap copy() {
return new MightyLeap(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class MindRot extends mage.sets.tenthedition.MindRot {
public MindRot(UUID ownerId) {
super(ownerId);
this.cardNumber = 281;
this.expansionSetCode = "ORI";
}
public MindRot(final MindRot card) {
super(card);
}
@Override
public MindRot copy() {
return new MindRot(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class Nightmare extends mage.sets.tenthedition.Nightmare {
public Nightmare(UUID ownerId) {
super(ownerId);
this.cardNumber = 282;
this.expansionSetCode = "ORI";
}
public Nightmare(final Nightmare card) {
super(card);
}
@Override
public Nightmare copy() {
return new Nightmare(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class Plummet extends mage.sets.magic2011.Plummet {
public Plummet(UUID ownerId) {
super(ownerId);
this.cardNumber = 286;
this.expansionSetCode = "ORI";
}
public Plummet(final Plummet card) {
super(card);
}
@Override
public Plummet copy() {
return new Plummet(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class PrizedUnicorn extends mage.sets.magic2010.PrizedUnicorn {
public PrizedUnicorn(UUID ownerId) {
super(ownerId);
this.cardNumber = 287;
this.expansionSetCode = "ORI";
}
public PrizedUnicorn(final PrizedUnicorn card) {
super(card);
}
@Override
public PrizedUnicorn copy() {
return new PrizedUnicorn(this);
}
}

View file

@ -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.sets.magicorigins;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.ProwessAbility;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
/**
*
* @author LevelX2
*/
public class RingwardenOwl extends CardImpl {
public RingwardenOwl(UUID ownerId) {
super(ownerId, 68, "Ringwarden Owl", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{U}{U}");
this.expansionSetCode = "ORI";
this.subtype.add("Bird");
this.power = new MageInt(3);
this.toughness = new MageInt(3);
// Flying
this.addAbility(FlyingAbility.getInstance());
// Prowess
this.addAbility(new ProwessAbility());
}
public RingwardenOwl(final RingwardenOwl card) {
super(card);
}
@Override
public RingwardenOwl copy() {
return new RingwardenOwl(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class RunedServitor extends mage.sets.riseoftheeldrazi.RunedServitor {
public RunedServitor(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public RunedServitor(final RunedServitor card) {
super(card);
}
@Override
public RunedServitor copy() {
return new RunedServitor(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class ScrapskinDrake extends mage.sets.avacynrestored.ScrapskinDrake {
public ScrapskinDrake(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public ScrapskinDrake(final ScrapskinDrake card) {
super(card);
}
@Override
public ScrapskinDrake copy() {
return new ScrapskinDrake(this);
}
}

View file

@ -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.sets.magicorigins;
import java.util.UUID;
import mage.constants.Rarity;
/**
*
* @author LevelX2
*/
public class SengirVampire extends mage.sets.tenthedition.SengirVampire {
public SengirVampire(UUID ownerId) {
super(ownerId);
this.cardNumber = 283;
this.expansionSetCode = "ORI";
this.rarity = Rarity.UNCOMMON;
}
public SengirVampire(final SengirVampire card) {
super(card);
}
@Override
public SengirVampire copy() {
return new SengirVampire(this);
}
}

View file

@ -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.sets.magicorigins;
import java.util.UUID;
import mage.constants.Rarity;
/**
*
* @author LevelX2
*/
public class SerraAngel extends mage.sets.tenthedition.SerraAngel {
public SerraAngel(UUID ownerId) {
super(ownerId);
this.cardNumber = 276;
this.expansionSetCode = "ORI";
this.rarity = Rarity.UNCOMMON;
}
public SerraAngel(final SerraAngel card) {
super(card);
}
@Override
public SerraAngel copy() {
return new SerraAngel(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class ShivanDragon extends mage.sets.tenthedition.ShivanDragon {
public ShivanDragon(UUID ownerId) {
super(ownerId);
this.cardNumber = 285;
this.expansionSetCode = "ORI";
}
public ShivanDragon(final ShivanDragon card) {
super(card);
}
@Override
public ShivanDragon copy() {
return new ShivanDragon(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class TerraStomper extends mage.sets.zendikar.TerraStomper {
public TerraStomper(UUID ownerId) {
super(ownerId);
this.cardNumber = 288;
this.expansionSetCode = "ORI";
}
public TerraStomper(final TerraStomper card) {
super(card);
}
@Override
public TerraStomper copy() {
return new TerraStomper(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class TitanicGrowth extends mage.sets.magic2012.TitanicGrowth {
public TitanicGrowth(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public TitanicGrowth(final TitanicGrowth card) {
super(card);
}
@Override
public TitanicGrowth copy() {
return new TitanicGrowth(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class TitansStrength extends mage.sets.theros.TitansStrength {
public TitansStrength(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public TitansStrength(final TitansStrength card) {
super(card);
}
@Override
public TitansStrength copy() {
return new TitansStrength(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class TowerGeist extends mage.sets.darkascension.TowerGeist {
public TowerGeist(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public TowerGeist(final TowerGeist card) {
super(card);
}
@Override
public TowerGeist copy() {
return new TowerGeist(this);
}
}

View file

@ -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.sets.magicorigins;
import java.util.UUID;
import mage.abilities.common.CreatureEntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.continuous.BoostControlledEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Rarity;
/**
*
* @author LevelX2
*/
public class ValorInAkros extends CardImpl {
public ValorInAkros(UUID ownerId) {
super(ownerId, 39, "Valor in Akros", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
this.expansionSetCode = "ORI";
// Whenever a creature enters the battlefield under your control, creatures you control get +1/+1 until end of turn.
this.addAbility(new CreatureEntersBattlefieldTriggeredAbility(new BoostControlledEffect(1,1,Duration.EndOfTurn)));
}
public ValorInAkros(final ValorInAkros card) {
super(card);
}
@Override
public ValorInAkros copy() {
return new ValorInAkros(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class VastwoodGorger extends mage.sets.zendikar.VastwoodGorger {
public VastwoodGorger(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public VastwoodGorger(final VastwoodGorger card) {
super(card);
}
@Override
public VastwoodGorger copy() {
return new VastwoodGorger(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class WeaveFate extends mage.sets.khansoftarkir.WeaveFate {
public WeaveFate(UUID ownerId) {
super(ownerId);
this.cardNumber = 279;
this.expansionSetCode = "ORI";
}
public WeaveFate(final WeaveFate card) {
super(card);
}
@Override
public WeaveFate copy() {
return new WeaveFate(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class WeightOfTheUnderworld extends mage.sets.bornofthegods.WeightOfTheUnderworld {
public WeightOfTheUnderworld(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public WeightOfTheUnderworld(final WeightOfTheUnderworld card) {
super(card);
}
@Override
public WeightOfTheUnderworld copy() {
return new WeightOfTheUnderworld(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class YevasForcemage extends mage.sets.magic2013.YevasForcemage {
public YevasForcemage(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public YevasForcemage(final YevasForcemage card) {
super(card);
}
@Override
public YevasForcemage copy() {
return new YevasForcemage(this);
}
}

View file

@ -0,0 +1,52 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are 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.magicorigins;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public class YokedOx extends mage.sets.theros.YokedOx {
public YokedOx(UUID ownerId) {
super(ownerId);
this.cardNumber = 999;
this.expansionSetCode = "ORI";
}
public YokedOx(final YokedOx card) {
super(card);
}
@Override
public YokedOx copy() {
return new YokedOx(this);
}
}

View file

@ -65,7 +65,7 @@ public class SoulFoundry extends CardImpl {
// Imprint - When Soul Foundry enters the battlefield, you may exile a creature card from your hand.
this.addAbility(new EntersBattlefieldTriggeredAbility(new SoulFoundryImprintEffect(), true, "<i>Imprint - </i>"));
// {X}, {tap}: Put a token that's a copy of the exiled card onto the battlefield. X is the converted mana cost of that card.
// {X}, {T}: Put a token that's a copy of the exiled card onto the battlefield. X is the converted mana cost of that card.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SoulFoundryEffect(), new ManaCostsImpl("{X}"));
ability.addCost(new TapSourceCost());
this.addAbility(ability);
@ -78,11 +78,13 @@ public class SoulFoundry extends CardImpl {
@Override
public void adjustCosts(Ability ability, Game game) {
Permanent card = game.getPermanent(ability.getSourceId());
if (card != null) {
if (card.getImprinted().size() > 0) {
Card imprinted = game.getCard(card.getImprinted().get(0));
if (ability instanceof SimpleActivatedAbility) {
Permanent sourcePermanent = game.getPermanent(ability.getSourceId());
if (sourcePermanent != null) {
if (sourcePermanent.getImprinted().size() > 0) {
Card imprinted = game.getCard(sourcePermanent.getImprinted().get(0));
if (imprinted != null) {
ability.getManaCostsToPay().clear();
ability.getManaCostsToPay().add(0, new GenericManaCost(imprinted.getManaCost().convertedManaCost()));
}
}
@ -95,6 +97,7 @@ public class SoulFoundry extends CardImpl {
}
}
}
}
@Override
public SoulFoundry copy() {

View file

@ -37,6 +37,7 @@ import mage.filter.FilterCard;
import mage.filter.predicate.mageobject.ColorlessPredicate;
import java.util.UUID;
import mage.constants.Zone;
/**
* @author LevelX
@ -54,10 +55,11 @@ public class AncientStirrings extends CardImpl {
super(ownerId, 174, "Ancient Stirrings", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{G}");
this.expansionSetCode = "ROE";
// Look at the top five cards of your library. You may reveal a colorless card from among them and put it into your hand.
// Then put the rest on the bottom of your library in any order. (Cards with no colored mana in their mana costs are colorless. Lands are also colorless.)
this.getSpellAbility().addEffect(new LookLibraryAndPickControllerEffect(new StaticValue(5), false, new StaticValue(1), filter, false));
this.getSpellAbility().addEffect(new LookLibraryAndPickControllerEffect(new StaticValue(5), false, new StaticValue(1), filter, Zone.LIBRARY,
false, true, false, Zone.HAND, true));
}
public AncientStirrings(final AncientStirrings card) {

View file

@ -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 org.mage.test.cards.abilities.oneshot.counterspell;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
*
* @author LevelX2
*/
public class CounterspellTest extends CardTestPlayerBase {
/**
It looks like Boom//Bust can't be countered (although it says it's countered in the log).
Code: Select all
13:10: Benno casts Boom [8ce] targeting Mountain [4c8] Island [80c]
13:10: Benno casts Counterspell [2b7] targeting Boom [8ce]
13:10: Benno puts Boom [8ce] from stack into his or her graveyard
13:10: Boom is countered by Counterspell [2b7]
13:10: Benno puts Counterspell [2b7] from stack into his or her graveyard
13:10: Mountain [4c8] was destroyed
13:10: Island [80c] was destroyed
*/
@Test
public void testCounterSplitSpell() {
// Boom - Sorcery {1}{R}
// Destroy target land you control and target land you don't control.
addCard(Zone.HAND, playerA, "Boom // Bust");
addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2);
addCard(Zone.BATTLEFIELD, playerB, "Island", 2);
addCard(Zone.HAND, playerB, "Counterspell");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Boom", "Mountain^Island");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, "Counterspell", "Boom");
setStopAt(1, PhaseStep.END_TURN);
execute();
assertGraveyardCount(playerA, "Boom // Bust", 1);
assertGraveyardCount(playerB, "Counterspell", 1);
assertPermanentCount(playerA, "Mountain", 2);
assertPermanentCount(playerB, "Island", 2);
assertLife(playerA, 20);
assertLife(playerB, 20);
}
}

View file

@ -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 org.mage.test.cards.copy;
import mage.abilities.keyword.FlyingAbility;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import mage.game.permanent.Permanent;
import org.junit.Assert;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
*
* @author LevelX2
*/
public class TheMimeoplasmTest extends CardTestPlayerBase {
/**
* I cast either Phyrexian Metamorph or Phantasmal Image and copied The
* Mimeoplasm which was copying a Primeval Titan, but my clone became
* another Mimeoplasm, so it exiled two creatures from graveyards and cloned
* one of those instead.
*
* Copying cards that are copy of other cards copies the original, rather
* than the copy.
* To wit, when The Mimeoplasm is out (and lets say is a copy of Elvish
* Mystic), and someone then plays Clone choosing to enter as the cloned
* Elvish Mystic, they are incorrectly getting The Mimeoplasm instead.
*
*/
@Test
public void testCloneMimeoplasm() {
// As The Mimeoplasm enters the battlefield, you may exile two creature cards from graveyards.
// If you do, it enters the battlefield as a copy of one of those cards with a number of additional +1/+1 counters on it equal to the power of the other card.
addCard(Zone.HAND, playerA, "The Mimeoplasm", 1); // {2}{G}{U}{B}
addCard(Zone.HAND, playerA, "Clone", 1); // {3}{U}
addCard(Zone.GRAVEYARD, playerB, "Silvercoat Lion", 1); // 2/2
addCard(Zone.GRAVEYARD, playerB, "Aven Riftwatcher", 1); // 2/3
addCard(Zone.BATTLEFIELD, playerA, "Forest", 1);
addCard(Zone.BATTLEFIELD, playerA, "Island", 7);
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 1);
castSpell(1,PhaseStep.PRECOMBAT_MAIN, playerA, "The Mimeoplasm");
setChoice(playerA, "Aven Riftwatcher");
setChoice(playerA, "Silvercoat Lion");
castSpell(1,PhaseStep.PRECOMBAT_MAIN, playerA, "Clone");
setChoice(playerA, "Aven Riftwatcher");
setStopAt(1, PhaseStep.END_TURN);
execute();
assertHandCount(playerA, "Clone", 0);
assertLife(playerA, 24);
assertLife(playerB, 20);
assertPermanentCount(playerA, "Aven Riftwatcher", 2);
assertPowerToughness(playerA, "Aven Riftwatcher", 4, 5);
assertPowerToughness(playerA, "Aven Riftwatcher", 2, 3);
assertGraveyardCount(playerB, 0);
}
}

View file

@ -0,0 +1,67 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation 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.single;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
*
* @author LevelX2
*/
public class SoulFoundryTest extends CardTestPlayerBase {
/**
* Soul Foundry imprinted with Bloodline Keeper costs 8 colorless mana to
* use the ability instead of 4 (the converted mana cost of Bloodline
* Keeper).
*/
@Test
public void testBloodlineKeeper() {
addCard(Zone.BATTLEFIELD, playerA, "Island", 8);
// Imprint - When Soul Foundry enters the battlefield, you may exile a creature card from your hand.
// {X}, {T}: Put a token that's a copy of the exiled card onto the battlefield. X is the converted mana cost of that card.
addCard(Zone.HAND, playerA, "Soul Foundry"); // {4}
addCard(Zone.HAND, playerA, "Bloodline Keeper");
castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Soul Foundry");
setChoice(playerA, "Yes");
activateAbility(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "{X},{T}: Put a token");
setStopAt(1, PhaseStep.END_TURN);
execute();
assertPermanentCount(playerA, "Soul Foundry", 1);
assertExileCount("Bloodline Keeper", 1);
assertPermanentCount(playerA, "Bloodline Keeper", 1);
}
}

View file

@ -0,0 +1,95 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package org.mage.test.cards.triggers;
import mage.cards.Card;
import mage.constants.PhaseStep;
import mage.constants.Zone;
import org.junit.Assert;
import org.junit.Test;
import org.mage.test.serverside.base.CardTestPlayerBase;
/**
*
* @author LevelX2
*/
public class PossibilityStormTest extends CardTestPlayerBase {
/**
* There's currently a bug with Possibility Storm and Zoetic Cavern. The way
* it's supposed to work is the P. Storm trigger exiles Zoetic Cavern and
* then uses last known information about the spell to determine the type of
* card the trigger is looking for(creature in this instance). Instead it's
* basing the type solely off what's printed on the card. What happened to
* me earlier was the trigger skipped right over an Emrakul and then
* revealed a Flooded Strand. I was prompted whether or not I wanted to
* "cast" Flooded Strand without paying it's cost. Eventually I clicked yes
* and it produced a Game Error that resulted in rollback. I recreated the
* error against an AI opponent and copied the code. Can't actually post it
* because the filter on this site claims it makes my post look too
* "spammy". Here's a screenshot of it instead(in spoiler tag).
*/
@Test
public void TestWithZoeticCavern() {
addCard(Zone.BATTLEFIELD, playerA, "Swamp", 3);
// Whenever a player casts a spell from his or her hand, that player exiles it, then exiles cards from
// the top of his or her library until he or she exiles a card that shares a card type with it. That
// player may cast that card without paying its mana cost. Then he or she puts all cards exiled with
// Possibility Storm on the bottom of his or her library in a random order.
addCard(Zone.BATTLEFIELD, playerA, "Possibility Storm", 2);
// {T}: Add {1} to your mana pool.
// Morph {2}
addCard(Zone.HAND, playerA, "Zoetic Cavern");
addCard(Zone.LIBRARY, playerA, "Silvercoat Lion");
skipInitShuffling();
playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Zoetic Cavern");
setChoice(playerA, "Yes");
setStopAt(1, PhaseStep.BEGIN_COMBAT);
execute();
assertPermanentCount(playerA, "Zoetic Cavern", 0);
boolean zoeticCavernInLibrary = false;
for (Card card: playerA.getLibrary().getCards(currentGame)) {
if (card.getName().equals("Zoetic Cavern")) {
zoeticCavernInLibrary = true;
}
}
Assert.assertEquals("Zoetic Cavern has to be in the library", true, zoeticCavernInLibrary);
assertPermanentCount(playerA, "Silvercoat Lion", 1);
}
}

View file

@ -29,6 +29,7 @@ package org.mage.test.player;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@ -91,6 +92,7 @@ import mage.target.TargetPermanent;
import mage.target.TargetPlayer;
import mage.target.TargetSource;
import mage.target.TargetSpell;
import mage.target.common.TargetCardInGraveyard;
import mage.target.common.TargetCardInHand;
import mage.target.common.TargetCardInLibrary;
import mage.target.common.TargetCreaturePermanentAmount;
@ -604,17 +606,53 @@ public class TestPlayer implements Player {
}
}
}
if (target instanceof TargetCardInGraveyard) {
TargetCardInGraveyard targetCardInGraveyard = ((TargetCardInGraveyard) target);
Set<UUID> possibleTargets = new HashSet<>();
for(UUID playerId: this.getInRange()) {
Player player = game.getPlayer(playerId);
if (player != null) {
possibleTargets.addAll(player.getGraveyard());
}
}
for (String choose2 : choices) {
String[] targetList = choose2.split("\\^");
boolean targetFound = false;
for (UUID targetId : possibleTargets) {
MageObject targetObject = game.getObject(targetId);
if (targetObject != null) {
for (String targetName : targetList) {
if (targetObject.getName().equals(targetName)) {
List<UUID> alreadyTargetted = targetCardInGraveyard.getTargets();
if (targetCardInGraveyard.canTarget(targetObject.getId(), game)) {
if (alreadyTargetted != null && !alreadyTargetted.contains(targetObject.getId())) {
targetCardInGraveyard.add(targetObject.getId(), game);
choices.remove(choose2);
targetFound = true;
}
}
}
}
if (targetFound && targetCardInGraveyard.isChosen()) {
choices.remove(choose2);
return true;
}
}
}
}
}
if (target instanceof TargetSource) {
Set<UUID> possibleTargets;
TargetSource t = ((TargetSource) target);
possibleTargets = t.possibleTargets(sourceId, computerPlayer.getId(), game);
for (UUID targetId : possibleTargets) {
MageObject targetObject = game.getObject(targetId);
if (targetObject != null) {
for (String choose2 : choices) {
String[] targetList = choose2.split("\\^");
boolean targetFound = false;
for (String targetName : targetList) {
for (UUID targetId : possibleTargets) {
MageObject targetObject = game.getObject(targetId);
if (targetObject != null) {
if (targetObject.getName().equals(targetName)) {
List<UUID> alreadyTargetted = target.getTargets();
if (t.canTarget(targetObject.getId(), game)) {

View file

@ -299,7 +299,7 @@ public abstract class AbilityImpl implements Ability {
// A player can't apply two alternative methods of casting or two alternative costs to a single spell.
if (!activateAlternateOrAdditionalCosts(sourceObject, noMana, controller, game)){
if (getAbilityType().equals(AbilityType.SPELL)
&& ((SpellAbility) this).getSpellAbilityType().equals(SpellAbilityType.LAND_ALTERNATE)) {
&& ((SpellAbility) this).getSpellAbilityType().equals(SpellAbilityType.FACE_DOWN_CREATURE)) {
return false;
}
}

View file

@ -0,0 +1,33 @@
/*
* 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.abilities.common;
import mage.abilities.StaticAbility;
import mage.abilities.effects.common.combat.AttacksIfAbleSourceEffect;
import mage.constants.Duration;
import mage.constants.Zone;
/**
*
* @author LevelX2
*/
public class AttacksEachCombatStaticAbility extends StaticAbility {
public AttacksEachCombatStaticAbility() {
super(Zone.BATTLEFIELD, new AttacksIfAbleSourceEffect(Duration.WhileOnBattlefield, true));
}
public AttacksEachCombatStaticAbility(AttacksEachCombatStaticAbility ability) {
super(ability);
}
@Override
public AttacksEachCombatStaticAbility copy() {
return new AttacksEachCombatStaticAbility(this);
}
}

View file

@ -32,6 +32,7 @@ import mage.constants.Duration;
import mage.constants.Zone;
import mage.abilities.StaticAbility;
import mage.abilities.effects.common.combat.AttacksIfAbleSourceEffect;
import mage.watchers.common.AttackedThisTurnWatcher;
/**
*
@ -41,6 +42,7 @@ public class AttacksEachTurnStaticAbility extends StaticAbility {
public AttacksEachTurnStaticAbility() {
super(Zone.BATTLEFIELD, new AttacksIfAbleSourceEffect(Duration.WhileOnBattlefield));
addWatcher(new AttackedThisTurnWatcher());
}
public AttacksEachTurnStaticAbility(AttacksEachTurnStaticAbility ability) {

View file

@ -81,6 +81,9 @@ public class CopyEffect extends ContinuousEffectImpl {
@Override
public void init(Ability source, Game game) {
super.init(source, game);
if (!(target instanceof Permanent) && (target instanceof Card)) {
this.target = new PermanentCard((Card)target, source.getControllerId(), game);
}
affectedObjectList.add(new MageObjectReference(getSourceId(), game));
}

View file

@ -33,6 +33,7 @@ import mage.abilities.Ability;
import mage.abilities.effects.RequirementEffect;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.watchers.common.AttackedThisTurnWatcher;
/**
*
@ -40,18 +41,25 @@ import mage.game.permanent.Permanent;
*/
public class AttacksIfAbleSourceEffect extends RequirementEffect {
boolean eachCombat;
public AttacksIfAbleSourceEffect(Duration duration) {
super(duration);
if (this.duration == Duration.EndOfTurn) {
staticText = "{this} attacks this turn if able";
this(duration, false);
}
else {
staticText = "{this} attacks each turn if able";
public AttacksIfAbleSourceEffect(Duration duration, boolean eachCombat) {
super(duration);
this.eachCombat = eachCombat;
if (this.duration == Duration.EndOfTurn) {
staticText = "{this} attacks " + (eachCombat ? "each combat" :"this turn") + " if able";
} else {
staticText = "{this} attacks each " + (eachCombat ? "combat" :"turn") + " if able";
}
}
public AttacksIfAbleSourceEffect(final AttacksIfAbleSourceEffect effect) {
super(effect);
this.eachCombat = effect.eachCombat;
}
@Override
@ -61,7 +69,14 @@ public class AttacksIfAbleSourceEffect extends RequirementEffect {
@Override
public boolean applies(Permanent permanent, Ability source, Game game) {
return permanent.getId().equals(source.getSourceId());
if (permanent.getId().equals(source.getSourceId())) {
if (eachCombat) {
return true;
}
AttackedThisTurnWatcher watcher = (AttackedThisTurnWatcher)game.getState().getWatchers().get("AttackedThisTurn");
return watcher != null && !watcher.getAttackedThisTurnCreatures().contains(permanent.getId());
}
return false;
}
@Override

View file

@ -359,6 +359,12 @@ public abstract class CardImpl extends MageObjectImpl implements Card {
break;
case STACK:
StackObject stackObject = game.getStack().getSpell(getId());
if (stackObject == null && (this instanceof SplitCard)) { // handle if half od Split cast is on the stack
stackObject = game.getStack().getSpell(((SplitCard)this).getLeftHalfCard().getId());
if (stackObject == null) {
stackObject = game.getStack().getSpell(((SplitCard)this).getRightHalfCard().getId());
}
}
if (stackObject != null) {
game.getStack().remove(stackObject);
}

View file

@ -7,7 +7,7 @@ package mage.constants;
public enum SpellAbilityType {
BASE("Basic SpellAbility"),
BASE_ALTERNATE("Basic SpellAbility Alternate"), // used for Overload, Flashback to know they must be handled as Alternate casting costs
LAND_ALTERNATE("Basic SpellAbility Alternate Land"), // used for Lands with Morph to cast as Face Down creature
FACE_DOWN_CREATURE("Face down creature"), // used for Lands with Morph to cast as Face Down creature
SPLIT("Split SpellAbility"),
SPLIT_FUSED("Split SpellAbility"),
SPLIT_LEFT("LeftSplit SpellAbility"),

View file

@ -372,6 +372,11 @@ public class Spell extends StackObjImpl implements Card {
@Override
public List<CardType> getCardType() {
if (this.getSpellAbility().getSpellAbilityType().equals(SpellAbilityType.FACE_DOWN_CREATURE)) {
List<CardType> cardTypes = new ArrayList<>();
cardTypes.add(CardType.CREATURE);
return cardTypes;
}
if (this.getSpellAbility() instanceof BestowAbility) {
List<CardType> cardTypes = new ArrayList<>();
cardTypes.addAll(card.getCardType());

View file

@ -989,7 +989,7 @@ public abstract class PlayerImpl implements Player, Serializable {
}
}
if (found) {
SpellAbility spellAbility = new SpellAbility(null, "", game.getState().getZone(card.getId()), SpellAbilityType.LAND_ALTERNATE);
SpellAbility spellAbility = new SpellAbility(null, "", game.getState().getZone(card.getId()), SpellAbilityType.FACE_DOWN_CREATURE);
spellAbility.setControllerId(this.getId());
spellAbility.setSourceId(card.getId());
if (cast(spellAbility, game, false)) {
@ -2936,10 +2936,12 @@ public abstract class PlayerImpl implements Player, Serializable {
if (choosingPlayer == null) {
continue;
}
boolean chooseOrder = true;
if (cards.size() > 2) {
boolean chooseOrder = false;
if (userData.askMoveToGraveOrder()) {
if (cards.size() > 3) {
chooseOrder = choosingPlayer.chooseUse(Outcome.Neutral, "Would you like to choose the order the cards go to graveyard?", game);
}
}
if (chooseOrder) {
TargetCard target = new TargetCard(fromZone, new FilterCard("card to put on the top of your graveyard (last one chosen will be topmost)"));
target.setRequired(true);

View file

@ -16,10 +16,11 @@ public class UserData implements Serializable {
protected boolean confirmEmptyManaPool;
protected UserSkipPrioritySteps userSkipPrioritySteps;
protected String flagName;
protected boolean askMoveToGraveOrder;
public UserData(UserGroup userGroup, int avatarId, boolean showAbilityPickerForced,
boolean allowRequestShowHandCards, boolean confirmEmptyManaPool, UserSkipPrioritySteps userSkipPrioritySteps,
String flagName) {
String flagName, boolean askMoveToGraveOrder) {
this.groupId = userGroup.getGroupId();
this.avatarId = avatarId;
this.showAbilityPickerForced = showAbilityPickerForced;
@ -85,4 +86,12 @@ public class UserData implements Serializable {
return flagName;
}
public boolean askMoveToGraveOrder() {
return askMoveToGraveOrder;
}
public void setAskMoveToGraveOrder(boolean askMoveToGraveOrder) {
this.askMoveToGraveOrder = askMoveToGraveOrder;
}
}

View file

@ -40,6 +40,7 @@ import mage.watchers.Watcher;
*/
public class AttackedThisTurnWatcher extends Watcher {
// TODO: use MageObjectReference instead of UUID
public Set<UUID> attackedThisTurnCreatures = new HashSet<>();
public AttackedThisTurnWatcher() {

View file

@ -25522,71 +25522,71 @@ Garruk, Apex Predator|Media Inserts|104|Special|{5}{B}{G}|Planeswalker - Garruk|
Shamanic Revelation|Media Inserts|105|Special|{2}{G}{G}|Sorcery|||Draw a card for each creature you control.$<i>Ferocious</i> - You gain 4 life for each creature you control with power 4 or greater.|
Ojutai's Command|Media Inserts|106|Special|{2}{W}{U}|Instant|||Choose two - Return target creature card with converted mana cost 2 or less from your graveyard to the battlefield; or You gain 4 life; or Counter target creature spell; or Draw a card.|
Sultai|Media Inserts|999|Special|{{U}{B}{G}|Legendary Creature - Placeholder|2|2||
Wood Elves|WPN Gateway|1|Special|{2}{G}|Creature Elf Scout|1|1|When Wood Elves enters the battlefield, search your library for a Forest card and put that card onto the battlefield. Then shuffle your library.|
Icatian Javelineers|WPN Gateway|2|Special|{W}|Creature Human Soldier|1|1|Icatian Javelineers enters the battlefield with a javelin counter on it.${T}, Remove a javelin counter from Icatian Javelineers: Icatian Javelineers deals 1 damage to target creature or player.|
Wood Elves|WPN Gateway|1|Special|{2}{G}|Creature — Elf Scout|1|1|When Wood Elves enters the battlefield, search your library for a Forest card and put that card onto the battlefield. Then shuffle your library.|
Icatian Javelineers|WPN Gateway|2|Special|{W}|Creature — Human Soldier|1|1|Icatian Javelineers enters the battlefield with a javelin counter on it.${T}, Remove a javelin counter from Icatian Javelineers: Icatian Javelineers deals 1 damage to target creature or player.|
Fiery Temper|WPN Gateway|3|Special|{1}{R}{R}|Instant|||Fiery Temper deals 3 damage to target creature or player.$Madness {R} <i>(If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)</i>|
Boomerang|WPN Gateway|4|Special|{U}{U}|Instant|||Return target permanent to its owner's hand.|
Calciderm|WPN Gateway|5|Special|{2}{W}{W}|Creature Beast|5|5|Shroud <i>(This creature can't be the target of spells or abilities.)</i>$Vanishing 4 <i>(This permanent enters the battlefield with four time counters on it. At the beginning of your upkeep, remove a time counter from it. When the last is removed, sacrifice it.)</i>|
Reckless Wurm|WPN Gateway|6|Special|{3}{R}{R}|Creature Wurm|4|4|Trample$Madness {2}{R} <i>(If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)</i>|
Yixlid Jailer|WPN Gateway|7|Special|{1}{B}|Creature Zombie Wizard|2|1|Cards in graveyards lose all abilities.|
Calciderm|WPN Gateway|5|Special|{2}{W}{W}|Creature — Beast|5|5|Shroud <i>(This creature can't be the target of spells or abilities.)</i>$Vanishing 4 <i>(This permanent enters the battlefield with four time counters on it. At the beginning of your upkeep, remove a time counter from it. When the last is removed, sacrifice it.)</i>|
Reckless Wurm|WPN Gateway|6|Special|{3}{R}{R}|Creature — Wurm|4|4|Trample$Madness {2}{R} <i>(If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)</i>|
Yixlid Jailer|WPN Gateway|7|Special|{1}{B}|Creature — Zombie Wizard|2|1|Cards in graveyards lose all abilities.|
Zoetic Cavern|WPN Gateway|8|Special||Land|||{T}: Add {1} to your mana pool.$Morph {2} <i>(You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)</i>|
Llanowar Elves|WPN Gateway|9|Special|{G}|Creature Elf Druid|1|1|{T}: Add {G} to your mana pool.|
Mogg Fanatic|WPN Gateway|10|Special|{R}|Creature Goblin|1|1|Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to target creature or player.|
Llanowar Elves|WPN Gateway|9|Special|{G}|Creature — Elf Druid|1|1|{T}: Add {G} to your mana pool.|
Mogg Fanatic|WPN Gateway|10|Special|{R}|Creature — Goblin|1|1|Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to target creature or player.|
Mind Stone|WPN Gateway|11|Special|{2}|Artifact|||{T}: Add {1} to your mana pool.${1}, {T}, Sacrifice Mind Stone: Draw a card.|
Dauntless Dourbark|WPN Gateway|12|Special|{3}{G}|Creature Treefolk Warrior|*|*|Dauntless Dourbark's power and toughness are each equal to the number of Forests you control plus the number of Treefolk you control.$Dauntless Dourbark has trample as long as you control another Treefolk.|
Dauntless Dourbark|WPN Gateway|12|Special|{3}{G}|Creature — Treefolk Warrior|*|*|Dauntless Dourbark's power and toughness are each equal to the number of Forests you control plus the number of Treefolk you control.$Dauntless Dourbark has trample as long as you control another Treefolk.|
Lava Axe|WPN Gateway|13|Special|{4}{R}|Sorcery|||Lava Axe deals 5 damage to target player.|
Cenn's Tactician|WPN Gateway|14|Special|{W}|Creature Kithkin Soldier|1|1|{W}, {T}: Put a +1/+1 counter on target Soldier creature.$Each creature you control with a +1/+1 counter on it can block an additional creature.|
Oona's Blackguard|WPN Gateway|15|Special|{1}{B}|Creature Faerie Rogue|1|1|Flying$Each other Rogue creature you control enters the battlefield with an additional +1/+1 counter on it.$Whenever a creature you control with a +1/+1 counter on it deals combat damage to a player, that player discards a card.|
Gravedigger|WPN Gateway|16|Special|{3}{B}|Creature Zombie|2|2|When Gravedigger enters the battlefield, you may return target creature card from your graveyard to your hand.|
Boggart Ram-Gang|WPN Gateway|17|Special|{RG}{RG}{RG}|Creature Goblin Warrior|3|3|Haste$Wither <i>(This deals damage to creatures in the form of -1/-1 counters.)</i>|
Wilt-Leaf Cavaliers|WPN Gateway|18|Special|{GW}{GW}{GW}|Creature Elf Knight|3|4|Vigilance|
Duergar Hedge-Mage|WPN Gateway|19|Special|{2}{RW}|Creature Dwarf Shaman|2|2|When Duergar Hedge-Mage enters the battlefield, if you control two or more Mountains, you may destroy target artifact.$When Duergar Hedge-Mage enters the battlefield, if you control two or more Plains, you may destroy target enchantment.|
Selkie Hedge-Mage|WPN Gateway|20|Special|{2}{GU}|Creature Merfolk Wizard|2|2|When Selkie Hedge-Mage enters the battlefield, if you control two or more Forests, you may gain 3 life.$When Selkie Hedge-Mage enters the battlefield, if you control two or more Islands, you may return target tapped creature to its owner's hand.|
Sprouting Thrinax|WPN Gateway|21|Special|{B}{R}{G}|Creature Lizard|3|3|When Sprouting Thrinax dies, put three 1/1 green Saproling creature tokens onto the battlefield.|
Woolly Thoctar|WPN Gateway|22|Special|{W}{R}{G}|Creature Beast|5|4||
Cenn's Tactician|WPN Gateway|14|Special|{W}|Creature — Kithkin Soldier|1|1|{W}, {T}: Put a +1/+1 counter on target Soldier creature.$Each creature you control with a +1/+1 counter on it can block an additional creature.|
Oona's Blackguard|WPN Gateway|15|Special|{1}{B}|Creature — Faerie Rogue|1|1|Flying$Each other Rogue creature you control enters the battlefield with an additional +1/+1 counter on it.$Whenever a creature you control with a +1/+1 counter on it deals combat damage to a player, that player discards a card.|
Gravedigger|WPN Gateway|16|Special|{3}{B}|Creature — Zombie|2|2|When Gravedigger enters the battlefield, you may return target creature card from your graveyard to your hand.|
Boggart Ram-Gang|WPN Gateway|17|Special|{RG}{RG}{RG}|Creature — Goblin Warrior|3|3|Haste$Wither <i>(This deals damage to creatures in the form of -1/-1 counters.)</i>|
Wilt-Leaf Cavaliers|WPN Gateway|18|Special|{GW}{GW}{GW}|Creature — Elf Knight|3|4|Vigilance|
Duergar Hedge-Mage|WPN Gateway|19|Special|{2}{RW}|Creature — Dwarf Shaman|2|2|When Duergar Hedge-Mage enters the battlefield, if you control two or more Mountains, you may destroy target artifact.$When Duergar Hedge-Mage enters the battlefield, if you control two or more Plains, you may destroy target enchantment.|
Selkie Hedge-Mage|WPN Gateway|20|Special|{2}{GU}|Creature — Merfolk Wizard|2|2|When Selkie Hedge-Mage enters the battlefield, if you control two or more Forests, you may gain 3 life.$When Selkie Hedge-Mage enters the battlefield, if you control two or more Islands, you may return target tapped creature to its owner's hand.|
Sprouting Thrinax|WPN Gateway|21|Special|{B}{R}{G}|Creature — Lizard|3|3|When Sprouting Thrinax dies, put three 1/1 green Saproling creature tokens onto the battlefield.|
Woolly Thoctar|WPN Gateway|22|Special|{W}{R}{G}|Creature — Beast|5|4||
Path to Exile|WPN Gateway|24|Special|{W}|Instant|||Exile target creature. Its controller may search his or her library for a basic land card, put that card onto the battlefield tapped, then shuffle his or her library.|
Hellspark Elemental|WPN Gateway|25|Special|{1}{R}|Creature Elemental|3|1|Trample, haste$At the beginning of the end step, sacrifice Hellspark Elemental.$Unearth {1}{R} <i>({1}{R}: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)</i>|
Marisi's Twinclaws|WPN Gateway|26|Special|{2}{RW}{G}|Creature Cat Warrior|2|4|Double strike|
Hellspark Elemental|WPN Gateway|25|Special|{1}{R}|Creature — Elemental|3|1|Trample, haste$At the beginning of the end step, sacrifice Hellspark Elemental.$Unearth {1}{R} <i>({1}{R}: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)</i>|
Marisi's Twinclaws|WPN Gateway|26|Special|{2}{RW}{G}|Creature — Cat Warrior|2|4|Double strike|
Slave of Bolas|WPN Gateway|27|Special|{3}{UR}{B}|Sorcery|||Gain control of target creature. Untap that creature. It gains haste until end of turn. Sacrifice it at the beginning of the next end step.|
Mycoid Shepherd|WPN Gateway|28|Special|{1}{W}{G}{G}|Creature Fungus|5|4|Whenever Mycoid Shepherd or another creature you control with power 5 or greater dies, you may gain 5 life.|
Naya Sojourners|WPN Gateway|29|Special|{2}{W}{R}{G}|Creature Elf Shaman|5|3|When you cycle Naya Sojourners or it dies, you may put a +1/+1 counter on target creature.$Cycling {2}{G} <i>({2}{G}, Discard this card: Draw a card.)</i>|
Mind Control|WPN Gateway|30|Special|{3}{U}{U}|Enchantment Aura|||Enchant creature$You control enchanted creature.|
Mycoid Shepherd|WPN Gateway|28|Special|{1}{W}{G}{G}|Creature — Fungus|5|4|Whenever Mycoid Shepherd or another creature you control with power 5 or greater dies, you may gain 5 life.|
Naya Sojourners|WPN Gateway|29|Special|{2}{W}{R}{G}|Creature — Elf Shaman|5|3|When you cycle Naya Sojourners or it dies, you may put a +1/+1 counter on target creature.$Cycling {2}{G} <i>({2}{G}, Discard this card: Draw a card.)</i>|
Mind Control|WPN Gateway|30|Special|{3}{U}{U}|Enchantment — Aura|||Enchant creature$You control enchanted creature.|
Rise from the Grave|WPN Gateway|31|Special|{4}{B}|Sorcery|||Put target creature card from a graveyard onto the battlefield under your control. That creature is a black Zombie in addition to its other colors and types.|
Kor Duelist|WPN Gateway|32|Special|{W}|Creature Kor Soldier|1|1|As long as Kor Duelist is equipped, it has double strike. <i>(It deals both first-strike and regular combat damage.)</i>|
Vampire Nighthawk|WPN Gateway|33|Special|{1}{B}{B}|Creature Vampire Shaman|2|3|Flying$Deathtouch <i>(Any amount of damage this deals to a creature is enough to destroy it.)</i>$Lifelink <i>(Damage dealt by this creature also causes you to gain that much life.)</i>|
Nissa's Chosen|WPN Gateway|34|Special|{G}{G}|Creature Elf Warrior|2|3|If Nissa's Chosen would die, put it on the bottom of its owner's library instead.|
Emeria Angel|WPN Gateway|35|Special|{2}{W}{W}|Creature — Angel|3|3|Flying$Landfall — Whenever a land enters the battlefield under your control, you may put a 1/1 white Bird creature token with flying onto the battlefield.|
Kor Firewalker|WPN Gateway|36|Special|{W}{W}|Creature Kor Soldier|2|2|Protection from red$Whenever a player casts a red spell, you may gain 1 life.|
Leatherback Baloth|WPN Gateway|37|Special|{G}{G}{G}|Creature Beast|4|5||
Hada Freeblade|WPN Gateway|38|Special|{W}|Creature Human Soldier Ally|0|1|Whenever Hada Freeblade or another Ally enters the battlefield under your control, you may put a +1/+1 counter on Hada Freeblade.|
Kalastria Highborn|WPN Gateway|39|Special|{B}{B}|Creature Vampire Shaman|2|2|Whenever Kalastria Highborn or another Vampire you control dies, you may pay {B}. If you do, target player loses 2 life and you gain 2 life.|
Kor Duelist|WPN Gateway|32|Special|{W}|Creature — Kor Soldier|1|1|As long as Kor Duelist is equipped, it has double strike. <i>(It deals both first-strike and regular combat damage.)</i>|
Vampire Nighthawk|WPN Gateway|33|Special|{1}{B}{B}|Creature — Vampire Shaman|2|3|Flying$Deathtouch <i>(Any amount of damage this deals to a creature is enough to destroy it.)</i>$Lifelink <i>(Damage dealt by this creature also causes you to gain that much life.)</i>|
Nissa's Chosen|WPN Gateway|34|Special|{G}{G}|Creature — Elf Warrior|2|3|If Nissa's Chosen would die, put it on the bottom of its owner's library instead.|
Emeria Angel|WPN Gateway|35|Special|{2}{W}{W}|Creature — Angel|3|3|Flying$Landfall — Whenever a land enters the battlefield under your control, you may put a 1/1 white Bird creature token with flying onto the battlefield.|
Kor Firewalker|WPN Gateway|36|Special|{W}{W}|Creature — Kor Soldier|2|2|Protection from red$Whenever a player casts a red spell, you may gain 1 life.|
Leatherback Baloth|WPN Gateway|37|Special|{G}{G}{G}|Creature — Beast|4|5||
Hada Freeblade|WPN Gateway|38|Special|{W}|Creature — Human Soldier Ally|0|1|Whenever Hada Freeblade or another Ally enters the battlefield under your control, you may put a +1/+1 counter on Hada Freeblade.|
Kalastria Highborn|WPN Gateway|39|Special|{B}{B}|Creature — Vampire Shaman|2|2|Whenever Kalastria Highborn or another Vampire you control dies, you may pay {B}. If you do, target player loses 2 life and you gain 2 life.|
Syphon Mind|WPN Gateway|40|Special|{3}{B}|Sorcery|||Each other player discards a card. You draw a card for each card discarded this way.|
Pathrazer of Ulamog|WPN Gateway|46|Special|{11}|Creature Eldrazi|9|9|Annihilator 3 <i>(Whenever this creature attacks, defending player sacrifices three permanents.)</i>$Pathrazer of Ulamog can't be blocked except by three or more creatures.|
Pathrazer of Ulamog|WPN Gateway|46|Special|{11}|Creature — Eldrazi|9|9|Annihilator 3 <i>(Whenever this creature attacks, defending player sacrifices three permanents.)</i>$Pathrazer of Ulamog can't be blocked except by three or more creatures.|
Curse of Wizardry|WPN Gateway|47|Special|{2}{B}{B}|Enchantment|||As Curse of Wizardry enters the battlefield, choose a color.$Whenever a player casts a spell of the chosen color, that player loses 1 life.|
Staggershock|WPN Gateway|48|Special|{2}{R}|Instant|||Staggershock deals 2 damage to target creature or player.$Rebound <i>(If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)</i>|
Deathless Angel|WPN Gateway|49|Special|{4}{W}{W}|Creature Angel|5|7|Flying${W}{W}: Target creature gains indestructible until end of turn.|
Deathless Angel|WPN Gateway|49|Special|{4}{W}{W}|Creature — Angel|5|7|Flying${W}{W}: Target creature gains indestructible until end of turn.|
Fling|WPN Gateway|50|Special|{1}{R}|Instant|||As an additional cost to cast Fling, sacrifice a creature.$Fling deals damage equal to the sacrificed creature's power to target creature or player.|
Sylvan Ranger|WPN Gateway|51|Special|{1}{G}|Creature Elf Scout|1|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.|
Plague Stinger|WPN Gateway|59|Special|{1}{B}|Creature Insect Horror|1|1|Flying$Infect <i>(This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)</i>|
Sylvan Ranger|WPN Gateway|51|Special|{1}{G}|Creature — Elf Scout|1|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.|
Plague Stinger|WPN Gateway|59|Special|{1}{B}|Creature — Insect Horror|1|1|Flying$Infect <i>(This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)</i>|
Golem's Heart|WPN Gateway|60|Special|{2}|Artifact|||Whenever a player casts an artifact spell, you may gain 1 life.|
Skinrender|WPN Gateway|63|Special|{2}{B}{B}|Creature Zombie|3|3|When Skinrender enters the battlefield, put three -1/-1 counters on target creature.|
Skinrender|WPN Gateway|63|Special|{2}{B}{B}|Creature — Zombie|3|3|When Skinrender enters the battlefield, put three -1/-1 counters on target creature.|
Master's Call|WPN Gateway|64|Special|{2}{W}|Instant|||Put two 1/1 colorless Myr artifact creature tokens onto the battlefield.|
Plague Myr|WPN Gateway|65|Special|{2}|Artifact Creature Myr|1|1|Infect <i>(This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)</i>${T}: Add {1} to your mana pool.|
Signal Pest|WPN Gateway|66|Special|{1}|Artifact Creature Pest|0|1|Battle cry <i>(Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.)</i>$Signal Pest can't be blocked except by creatures with flying or reach.|
Plague Myr|WPN Gateway|65|Special|{2}|Artifact Creature — Myr|1|1|Infect <i>(This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)</i>${T}: Add {1} to your mana pool.|
Signal Pest|WPN Gateway|66|Special|{1}|Artifact Creature — Pest|0|1|Battle cry <i>(Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.)</i>$Signal Pest can't be blocked except by creatures with flying or reach.|
Fling|WPN Gateway|69|Special|{1}{R}|Instant|||As an additional cost to cast Fling, sacrifice a creature.$Fling deals damage equal to the sacrificed creature's power to target creature or player.|
Sylvan Ranger|WPN Gateway|70|Special|{1}{G}|Creature Elf Scout|1|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.|
Vault Skirge|WPN Gateway|71|Special|{1}{BP}|Artifact Creature Imp|1|1|<i>({BP} can be paid with either {B} or 2 life.)</i>$Flying$Lifelink <i>(Damage dealt by this creature also causes you to gain that much life.)</i>|
Maul Splicer|WPN Gateway|72|Special|{6}{G}|Creature Human Artificer|1|1|When Maul Splicer enters the battlefield, put two 3/3 colorless Golem artifact creature tokens onto the battlefield.$Golem creatures you control have trample.|
Sylvan Ranger|WPN Gateway|70|Special|{1}{G}|Creature — Elf Scout|1|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.|
Vault Skirge|WPN Gateway|71|Special|{1}{BP}|Artifact Creature — Imp|1|1|<i>({BP} can be paid with either {B} or 2 life.)</i>$Flying$Lifelink <i>(Damage dealt by this creature also causes you to gain that much life.)</i>|
Maul Splicer|WPN Gateway|72|Special|{6}{G}|Creature — Human Artificer|1|1|When Maul Splicer enters the battlefield, put two 3/3 colorless Golem artifact creature tokens onto the battlefield.$Golem creatures you control have trample.|
Shrine of Burning Rage|WPN Gateway|73|Special|{2}|Artifact|||At the beginning of your upkeep or whenever you cast a red spell, put a charge counter on Shrine of Burning Rage.${3}, {T}, Sacrifice Shrine of Burning Rage: Shrine of Burning Rage deals damage equal to the number of charge counters on it to target creature or player.|
Tormented Soul|WPN Gateway|76|Special|{B}|Creature Spirit|1|1|Tormented Soul can't block and can't be blocked.|
Auramancer|WPN Gateway|77|Special|{2}{W}|Creature Human Wizard|2|2|When Auramancer enters the battlefield, you may return target enchantment card from your graveyard to your hand.|
Tormented Soul|WPN Gateway|76|Special|{B}|Creature — Spirit|1|1|Tormented Soul can't block and can't be blocked.|
Auramancer|WPN Gateway|77|Special|{2}{W}|Creature — Human Wizard|2|2|When Auramancer enters the battlefield, you may return target enchantment card from your graveyard to your hand.|
Circle of Flame|WPN Gateway|78|Special|{1}{R}|Enchantment|||Whenever a creature without flying attacks you or a planeswalker you control, Circle of Flame deals 1 damage to that creature.|
Gather the Townsfolk|WPN Gateway|79|Special|{1}{W}|Sorcery|||Put two 1/1 white Human creature tokens onto the battlefield.$Fateful hour If you have 5 or less life, put five of those tokens onto the battlefield instead.|
Curse of the Bloody Tome|WPN Gateway|80|Special|{2}{U}|Enchantment Aura Curse|||Enchant player$At the beginning of enchanted player's upkeep, that player puts the top two cards of his or her library into his or her graveyard.|
Curse of Thirst|WPN Gateway|81|Special|{4}{B}|Enchantment Aura Curse|||Enchant player$At the beginning of enchanted player's upkeep, Curse of Thirst deals damage to that player equal to the number of Curses attached to him or her.|
Nearheath Stalker|WPN Gateway|82|Special|{4}{R}|Creature Vampire Rogue|4|1|Undying <i>(When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)</i>|
Bloodcrazed Neonate|WPN Gateway|83|Special|{1}{R}|Creature Vampire|2|1|Bloodcrazed Neonate attacks each turn if able.$Whenever Bloodcrazed Neonate deals combat damage to a player, put a +1/+1 counter on it.|
Boneyard Wurm|WPN Gateway|84|Special|{1}{G}|Creature Wurm|*|*|Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard.|
Gather the Townsfolk|WPN Gateway|79|Special|{1}{W}|Sorcery|||Put two 1/1 white Human creature tokens onto the battlefield.$Fateful hour — If you have 5 or less life, put five of those tokens onto the battlefield instead.|
Curse of the Bloody Tome|WPN Gateway|80|Special|{2}{U}|Enchantment — Aura Curse|||Enchant player$At the beginning of enchanted player's upkeep, that player puts the top two cards of his or her library into his or her graveyard.|
Curse of Thirst|WPN Gateway|81|Special|{4}{B}|Enchantment — Aura Curse|||Enchant player$At the beginning of enchanted player's upkeep, Curse of Thirst deals damage to that player equal to the number of Curses attached to him or her.|
Nearheath Stalker|WPN Gateway|82|Special|{4}{R}|Creature — Vampire Rogue|4|1|Undying <i>(When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)</i>|
Bloodcrazed Neonate|WPN Gateway|83|Special|{1}{R}|Creature — Vampire|2|1|Bloodcrazed Neonate attacks each turn if able.$Whenever Bloodcrazed Neonate deals combat damage to a player, put a +1/+1 counter on it.|
Boneyard Wurm|WPN Gateway|84|Special|{1}{G}|Creature — Wurm|*|*|Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard.|
Dirtcowl Wurm|Prerelease Events|1|Special|{4}{G}|Creature - Wurm|3|4|Whenever an opponent plays a land, put a +1/+1 counter on Dirtcowl Wurm.|
Revenant|Prerelease Events|2|Special|{4}{B}|Creature - Spirit|*|*|Flying$Revenant's power and toughness are each equal to the number of creature cards in your graveyard.|
Monstrous Hount|Prerelease Events|3|Special|{3}{R}|Creature - Hound|4|4|Monstrous Hound can't attack unless you control more lands than defending player.$Monstrous Hound can't block unless you control more lands than attacking player.|
@ -25601,7 +25601,7 @@ Avatar of Hope|Prerelease Events|11|Special|{6}{W}{W}|Creature - Avatar|4|9|If y
Raging Kavu|Prerelease Events|12|Special|{4}{1}{R}{G}|Creature - Kavu|3|1|Flash$Haste|
Questing Phelddagrif|Prerelease Events|13|Special|{1}{W}{U}{G}|Creature - Phelddagrif|4|4|{G}: Questing Phelddagrif gets +1/+1 until end of turn. Target opponent puts a 1/1 green Hippo creature token onto the battlefield.${W}: Questing Phelddagrif gains protection from black and from red until end of turn. Target opponent gains 2 life.${U}: Questing Phelddagrif gains flying until end of turn. Target opponent may draw a card.|
Fungal Shambler|Prerelease Events|14|Special|{4}{U}{B}{G}|Creature - Fungus Beast|6|4|Trample$Whenever Fungal Shambler deals damage to an opponent, you draw a card and that opponent discards a card.|
Stone-Tongue Baselisk|Prerelease Events|15|Special|{4}{G}{G}{G}|Creature - Basilisk|4|5|Whenever Stone-Tongue Basilisk deals combat damage to a creature, destroy that creature at end of combat.$Threshold As long as seven or more cards are in your graveyard, all creatures able to block Stone-Tongue Basilisk do so.|
Stone-Tongue Baselisk|Prerelease Events|15|Special|{4}{G}{G}{G}|Creature - Basilisk|4|5|Whenever Stone-Tongue Basilisk deals combat damage to a creature, destroy that creature at end of combat.$Threshold — As long as seven or more cards are in your graveyard, all creatures able to block Stone-Tongue Basilisk do so.|
Laquatus's Champion|Prerelease Events|16|Special|{4}{B}{B}|Creature - Nightmare Horror|6|3|When Laquatus's Champion enters the battlefield, target player loses 6 life.$When Laquatus's Champion leaves the battlefield, that player gains 6 life.${B}: Regenerate Laquatus's Champion.|
Glory|Prerelease Events|17|Special|{{3}{W}{W}|Creature - Incarnation|3|3|Flying${2}{W}: Choose a color. Creatures you control gain protection from the chosen color until end of turn. Activate this ability only if Glory is in your graveyard.|
Silent Specter|Prerelease Events|18|Special|{4}{B}{B}|Creature - Specter|4|4|Flying$Whenever Silent Specter deals combat damage to a player, that player discards two cards.$Morph {3}{B}{B} <i>(You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)</i>|
@ -25617,9 +25617,9 @@ Gleancrawler|Prerelease Events|27|Special|{3}{BG}{BG}{BG}|Creature - Insect Horr
Djinn Illuminatus|Prerelease Events|28|Special|{5}{UR}{UR}|Creature - Djinn|3|5|<i>({U/R} can be paid with either {U} or {R}.)</i>$Flying$Each instant and sorcery spell you cast has replicate. The replicate cost is equal to its mana cost. <i>(When you cast it, copy it for each time you paid its replicate cost. You may choose new targets for the copies.)</i>|
Avatar of Discord|Prerelease Events|29|Special|{BR}{BR}{BR}|Creature - Avatar|5|3|<i>({B/R} can be paid with either {B} or {R}.)</i>$Flying$When Avatar of Discord enters the battlefield, sacrifice it unless you discard two cards.|
Allosaurus Rider|Prerelease Events|30|Special|{5}{G}{G}|Creature - Elf Warrior|1+*|1+*|You may exile two green cards from your hand rather than pay Allosaurus Rider's mana cost.$Allosaurus Rider's power and toughness are each equal to 1 plus the number of lands you control.|
Lotus Bloom|Prerelease Events|31|Special||Artifact|||Suspend 3<EFBFBD>{0} <i>(Rather than cast this card from your hand, pay {0} and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.)</i>${T}, Sacrifice Lotus Bloom: Add three mana of any one color to your mana pool.
Lotus Bloom|Prerelease Events|31|Special||Artifact|||Suspend 3�{0} <i>(Rather than cast this card from your hand, pay {0} and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.)</i>${T}, Sacrifice Lotus Bloom: Add three mana of any one color to your mana pool.
Oros, the Avenger|Prerelease Events|32|Special|{3}{W}{B}{R}|Legendary Creature - Dragon|6|6|Flying$Whenever Oros, the Avenger deals combat damage to a player, you may pay {2}{W}. If you do, Oros deals 3 damage to each nonwhite creature.|
Korlash, Heir to Blackblade|Prerelease Events|33|Special|{2}{B}{B}|Legendary Creature - Zombie Warrior|*|*|Korlash, Heir to Blackblade's power and toughness are each equal to the number of Swamps you control.${1}{B}: Regenerate Korlash.$Grandeur Discard another card named Korlash, Heir to Blackblade: Search your library for up to two Swamp cards, put them onto the battlefield tapped, then shuffle your library.|
Korlash, Heir to Blackblade|Prerelease Events|33|Special|{2}{B}{B}|Legendary Creature - Zombie Warrior|*|*|Korlash, Heir to Blackblade's power and toughness are each equal to the number of Swamps you control.${1}{B}: Regenerate Korlash.$Grandeur — Discard another card named Korlash, Heir to Blackblade: Search your library for up to two Swamp cards, put them onto the battlefield tapped, then shuffle your library.|
Wren's Run Packmaster|Prerelease Events|34|Special|{3}{G}|Creature - Elf Warrior|5|5|Champion an Elf <i>(When this creature enters the battlefield, sacrifice it unless you exile another Elf you control. When this creature leaves the battlefield, that card returns to the battlefield.)</i>${2}{G}: Put a 2/2 green Wolf creature token onto the battlefield.$Wolves you control have deathtouch.|
Door of Destinies|Prerelease Events|35|Special|{4}|Artifact|||As Door of Destinies enters the battlefield, choose a creature type.$Whenever you cast a spell of the chosen type, put a charge counter on Door of Destinies.$Creatures you control of the chosen type get +1/+1 for each charge counter on Door of Destinies.|
Demigod of Revenge|Prerelease Events|36|Special|{BR}{BR}{BR}{BR}{BR}|Creature - Spirit Avatar|5|4|Flying$Haste$When you cast Demigod of Revenge, return all cards named Demigod of Revenge from your graveyard to the battlefield.|
@ -25628,7 +25628,7 @@ Ajani Vengeant|Prerelease Events|38|Special|{2}{W}{R}|Planeswalker - Ajani|||+1:
Malfegor|Prerelease Events|39|Special|{2}{B}{B}{R}{R}|Legendary Creature - Demon Dragon|6|6|Flying$When Malfegor enters the battlefield, discard your hand. Each opponent sacrifices a creature for each card discarded this way.|
Dragon Broodmother|Prerelease Events|40|Special|{2}{R}{R}{R}{G}|Creature - Dragon|4|4|Flying$At the beginning of each upkeep, put a 1/1 red and green Dragon creature token with flying and devour 2 onto the battlefield. <i>(As the token enters the battlefield, you may sacrifice any number of creatures. It enters the battlefield with twice that many +1/+1 counters on it.)</i>|
Vampire Nocturnus|Prerelease Events|41|Special|{1}{B}{B}{B}|Creature - Vampire|3|3|Play with the top card of your library revealed.$As long as the top card of your library is black, Vampire Nocturnus and other Vampire creatures you control get +2/+1 and have flying.|
Rampaging Baloths|Prerelease Events|42|Special|{4}{G}{G}|Creature - Beast|6|6|Trample$Landfall Whenever a land enters the battlefield under your control, you may put a 4/4 green Beast creature token onto the battlefield.|
Rampaging Baloths|Prerelease Events|42|Special|{4}{G}{G}|Creature - Beast|6|6|Trample$Landfall — Whenever a land enters the battlefield under your control, you may put a 4/4 green Beast creature token onto the battlefield.|
Comet Storm|Prerelease Events|43|Special|{X}{R}{R}|Instant|||Multikicker {1} <i>(You may pay an additional {1} any number of times as you cast this spell.)</i>$Choose target creature or player, then choose another target creature or player for each time Comet Storm was kicked. Comet Storm deals X damage to each of them.|
Emrakul, the Aeons Torn|Prerelease Events|44|Special|{15}|Legendary Creature - Eldrazi|15|15|Emrakul, the Aeons Torn can't be countered.$When you cast Emrakul, take an extra turn after this one.$Flying, protection from colored spells, annihilator 6$When Emrakul is put into a graveyard from anywhere, its owner shuffles his or her graveyard into his or her library.|
Sun Titan|Prerelease Events|45|Special|{4}{W}{W}|Creature - Giant|6|6|Vigilance$Whenever Sun Titan enters the battlefield or attacks, you may return target permanent card with converted mana cost 3 or less from your graveyard to the battlefield.|
@ -25651,7 +25651,7 @@ Grove of the Guardian|Prerelease Events|59|Special||Land|||{T}: Add {1} to your
Consuming Aberration|Prerelease Events|60|Special|{3}{U}{B}|Creature - Horror|*|*|Consuming Aberration's power and toughness are each equal to the number of cards in your opponents' graveyards.$Whenever you cast a spell, each opponent reveals cards from the top of his or her library until he or she reveals a land card, then puts those cards into his or her graveyard.|
Fathom Mage|Prerelease Events|61|Special|{2}{U}{G}|Creature - Human Wizard|1|1|Evolve <i>(Whenever a creature enters the battlefield under your control, if that creature has greater power or toughness than this creature, put a +1/+1 counter on this creature.)</i>$Whenever a +1/+1 counter is placed on Fathom Mage, you may draw a card.|
Foundry Champion|Prerelease Events|62|Special|{4}{W}{R}|Creature - Elemental Soldier|4|4When Foundry Champion enters the battlefield, it deals damage to target creature or player equal to the number of creatures you control.${R}: Foundry Champion gets +1/+0 until end of turn.${W}: Foundry Champion gets +0/+1 until end of turn.|
Rubblehulk|Prerelease Events|63|Special|{4}{R}{G}|Creature - Elemental|*|*|Rubblehulk's power and toughness are each equal to the number of lands you control.$Bloodrush {1}{R}{G}, Discard Rubblehulk: Target attacking creature gets +X/+X until end of turn, where X is the number of lands you control.|
Rubblehulk|Prerelease Events|63|Special|{4}{R}{G}|Creature - Elemental|*|*|Rubblehulk's power and toughness are each equal to the number of lands you control.$Bloodrush — {1}{R}{G}, Discard Rubblehulk: Target attacking creature gets +X/+X until end of turn, where X is the number of lands you control.|
Treasury Thrull|Prerelease Events|64|Special|{4}{W}{B}|Creature - Thrull|4|4|Extort <i>(Whenever you cast a spell, you may pay {WB}. If you do, each opponent loses 1 life and you gain that much life.)</i>$Whenever Treasury Thrull attacks, you may return target artifact, creature, or enchantment card from your graveyard to your hand.|
Maze's End|Prerelease Events|65|Special||Land|||Maze's End enters the battlefield tapped.${T}: Add {1} to your mana pool.${3}, {T}, Return Maze's End to its owner's hand: Search your library for a Gate card, put it onto the battlefield, then shuffle your library. If you control ten or more Gates with different names, you win the game.|
Plains|Prerelease Events|66|Special||Basic Land - Plains|||<i>({T}: Add {W} to your mana pool.)</i>|
@ -25660,15 +25660,15 @@ Celestial Archon|Prerelease Events|68|Special|{3}{W}{W}|Enchantment Creature - A
Shipbreaker Kraken|Prerelease Events|69|Special|{4}{U}{U}|Creature - Kraken|6|6|{6}{U}{U}: Monstrosity 4. <i>(If this creature isn't monstrous, put four +1/+1 counters on it and it becomes monstrous.)</i>$When Shipbreaker Kraken becomes monstrous, tap up to four target creatures. Those creatures don't untap during their controllers' untap steps for as long as you control Shipbreaker Kraken.|
Abhorrent Overlord|Prerelease Events|70|Special|{5}{B}{B}|Creature - Demon|6|6|Flying$When Abhorrent Overlord enters the battlefield, put a number of 1/1 black Harpy creature tokens with flying onto the battlefield equal to your devotion to black. <i>(Each {B} in the mana costs of permanents you control counts toward your devotion to black.)</i>$At the beginning of your upkeep, sacrifice a creature.|
Ember Swallower|Prerelease Events|71|Special|{2}{R}{R}|Creature - Elemental|4|5|{5}{R}{R}: Monstrosity 3. <i>(If this creature isn't monstrous, put three +1/+1 counters on it and it becomes monstrous.)</i>$When Ember Swallower becomes monstrous, each player sacrifices three lands.|
Anthousa, Setessan Hero|Prerelease Events|72|Special|{3}{G}{G}|Legendary Creature - Human Warrior|4|5|Heroic Whenever you cast a spell that targets Anthousa, Setessan Hero, up to three target lands you control each become 2/2 Warrior creatures until end of turn. They're still lands.|
Anthousa, Setessan Hero|Prerelease Events|72|Special|{3}{G}{G}|Legendary Creature - Human Warrior|4|5|Heroic — Whenever you cast a spell that targets Anthousa, Setessan Hero, up to three target lands you control each become 2/2 Warrior creatures until end of turn. They're still lands.|
Silent Sentinel|Prerelease Events|73|Special|{5}{W}{W}|Creature - Archon|4|6|Flying$Whenever Silent Sentinel attacks, you may return target enchantment card from your graveyard to the battlefield.|
Arbiter of the Ideal|Prerelease Events|74|Special|{4}{U}{U}|Creature - Sphinx|4|5|Flying$Inspired Whenever Arbiter of the Ideal becomes untapped, reveal the top card of your library. If it's an artifact, creature, or land card, you may put it onto the battlefield with a manifestation counter on it. That permanent is an enchantment in addition to its other types.|
Arbiter of the Ideal|Prerelease Events|74|Special|{4}{U}{U}|Creature - Sphinx|4|5|Flying$Inspired — Whenever Arbiter of the Ideal becomes untapped, reveal the top card of your library. If it's an artifact, creature, or land card, you may put it onto the battlefield with a manifestation counter on it. That permanent is an enchantment in addition to its other types.|
Eater of Hope|Prerelease Events|75|Special|{5}{B}{B}|Creature - Demon|6|4|Flying${B}, Sacrifice another creature: Regenerate Eater of Hope.${2}{B}, Sacrifice two other creatures: Destroy target creature.|
Forgestoker Dragon|Prerelease Events|76|Special|{4}{R}{R}|Creature - Dragon|5|4|Flying${1}{R}: Forgestoker Dragon deals 1 damage to target creature. That creature can't block this combat. Activate this ability only if Forgestoker Dragon is attacking.|
Nessian Wilds Ravager|Prerelease Events|77|Special|{4}{G}{G}|Creature - Hydra|6|6|Tribute 6 <i>(As this creature enters the battlefield, an opponent of your choice may place six +1/+1 counters on it.)</i>$When Nessian Wilds Ravager enters the battlefield, if tribute wasn't paid, you may have Nessian Wilds Ravager fight another target creature. <i>(Each deals damage equal to its power to the other.)</i>|
Dawnbringer Charioteers|Prerelease Events|78|Special|{2}{W}{W}|Creature - Human Soldier|2|4|Flying, lifelink$Heroic Whenever you cast a spell that targets Dawnbringer Charioteers, put a +1/+1 counter on Dawnbringer Charioteers.|
Dawnbringer Charioteers|Prerelease Events|78|Special|{2}{W}{W}|Creature - Human Soldier|2|4|Flying, lifelink$Heroic — Whenever you cast a spell that targets Dawnbringer Charioteers, put a +1/+1 counter on Dawnbringer Charioteers.|
Scourge of Fleets|Prerelease Events|79|Special|{5}{U}{U}|Creature - Kraken|6|6|When Scourge of Fleets enters the battlefield, return each creature your opponents control with toughness X or less to its owner's hand, where X is the number of Islands you control.|
Doomwake Giant|Prerelease Events|80|Special|{4}{B}|Enchantment Creature - Giant|4|6|Constellation Whenever Doomwake Giant or another enchantment enters the battlefield under your control, creatures your opponents control get -1/-1 until end of turn.|
Doomwake Giant|Prerelease Events|80|Special|{4}{B}|Enchantment Creature - Giant|4|6|Constellation — Whenever Doomwake Giant or another enchantment enters the battlefield under your control, creatures your opponents control get -1/-1 until end of turn.|
Spawn of Thraxes|Prerelease Events|81|Special|{5}{R}{R}|Creature - Dragon|5|5|Flying$When Spawn of Thraxes enters the battlefield, it deals damage to target creature or player equal to the number of Mountains you control.|
Heroes' Bane|Prerelease Events|82|Special|{3}{G}{G}|Creature - Hydra|0|0|Heroes' Bane enters the battlefield with four +1/+1 counters on it.${2}{G}{G}: Put X +1/+1 counters on Heroes' Bane, where X is its power.|
Resolute Archangel|Prerelease Events|83|Special|{5}{W}{W}|Creature - Angel|4|4|Flying$When Resolute Archangel enters the battlefield, if your life total is less than your starting life total, it becomes equal to your starting life total.|
@ -26018,7 +26018,7 @@ Thrive|Modern Masters 2015 Edition|166|C|{X}{G}|Sorcery|||Put a +1/+1 counter on
Tukatongue Thallid|Modern Masters 2015 Edition|167|C|{G}|Creature - Fungus|1|1|When Tukatongue Thallid dies, put a 1/1 green Saproling creature token onto the battlefield.|
Vines of Vastwood|Modern Masters 2015 Edition|168|C|{G}|Instant|||Kicker {G} <i>(You may pay an additional {G} as you cast this spell.)</i>$Target creature can't be the target of spells or abilities your opponents control this turn. If Vines of Vastwood was kicked, that creature gets +4/+4 until end of turn.|
Wolfbriar Elemental|Modern Masters 2015 Edition|169|R|{2}{G}{G}|Creature - Elemental|4|4|Multikicker {G} <i>(You may pay an additional {G} any number of times as you cast this spell.)</i>$When Wolfbriar Elemental enters the battlefield, put a 2/2 green Wolf creature token onto the battlefield for each time it was kicked.|
Fortify|Modern Masters 2015 Edition|17|C|{2}{W}|Instant|||Choose one -$• Creatures you control get +2/+0 until end of turn.$• Creatures you control get +0/+2 until end of turn.|
Fortify|Modern Masters 2015 Edition|17|C|{2}{W}|Instant|||Choose one -$• Creatures you control get +2/+0 until end of turn.$• Creatures you control get +0/+2 until end of turn.|
Agony Warp|Modern Masters 2015 Edition|170|U|{U}{B}|Instant|||Target creature gets -3/-0 until end of turn.$Target creature gets -0/-3 until end of turn.|
Apocalypse Hydra|Modern Masters 2015 Edition|171|R|{X}{R}{G}|Creature - Hydra|0|0|Apocalypse Hydra enters the battlefield with X +1/+1 counters on it. If X is 5 or more, it enters the battlefield with an additional X +1/+1 counters on it.${1}{R}, Remove a +1/+1 counter from Apocalypse Hydra: Apocalypse Hydra deals 1 damage to target creature or player.|
Boros Swiftblade|Modern Masters 2015 Edition|172|U|{R}{W}|Creature - Human Soldier|1|2|Double strike|
@ -26127,7 +26127,7 @@ Karn Liberated|Modern Masters 2015 Edition|4|M|{7}|Planeswalker - Karn|||+4: Tar
Air Servant|Modern Masters 2015 Edition|40|U|{4}{U}|Creature - Elemental|4|3|Flying${2}{U}: Tap target creature with flying.|
Argent Sphinx|Modern Masters 2015 Edition|41|R|{2}{U}{U}|Creature - Sphinx|4|3|Flying$Metalcraft - {U}: Exile Argent Sphinx. Return it to the battlefield under your control at the beginning of the next end step. Activate this ability only if you control three or more artifacts.|
Cloud Elemental|Modern Masters 2015 Edition|42|C|{2}{U}|Creature - Elemental|2|3|Flying$Cloud Elemental can block only creatures with flying.|
Cryptic Command|Modern Masters 2015 Edition|43|R|{1}{U}{U}{U}|Instant|||Choose two -$• Counter target spell.$• Return target permanent to its owner's hand.$• Tap all creatures your opponents control.$• Draw a card.|
Cryptic Command|Modern Masters 2015 Edition|43|R|{1}{U}{U}{U}|Instant|||Choose two -$• Counter target spell.$• Return target permanent to its owner's hand.$• Tap all creatures your opponents control.$• Draw a card.|
Faerie Mechanist|Modern Masters 2015 Edition|44|C|{3}{U}|Artifact Creature - Faerie Artificer|2|2|Flying$When Faerie Mechanist enters the battlefield, look at the top three cards of your library. You may reveal an artifact card from among them and put it into your hand. Put the rest on the bottom of your library in any order.|
Flashfreeze|Modern Masters 2015 Edition|45|U|{1}{U}|Instant|||Counter target red or green spell.|
Guile|Modern Masters 2015 Edition|46|R|{3}{U}{U}{U}|Creature - Elemental Incarnation|6|6|Guile can't be blocked except by three or more creatures.$If a spell or ability you control would counter a spell, instead exile that spell and you may play that card without paying its mana cost.$When Guile is put into a graveyard from anywhere, shuffle it into its owner's library.|
@ -26179,7 +26179,7 @@ Nameless Inversion|Modern Masters 2015 Edition|87|C|{1}{B}|Tribal Instant - Shap
Necroskitter|Modern Masters 2015 Edition|88|R|{1}{B}{B}|Creature - Elemental|1|4|Wither <i>(This deals damage to creatures in the form of -1/-1 counters.)</i>$Whenever a creature an opponent controls with a -1/-1 counter on it dies, you may return that card to the battlefield under your control.|
Plagued Rusalka|Modern Masters 2015 Edition|89|C|{B}|Creature - Spirit|1|1|{B}, Sacrifice a creature: Target creature gets -1/-1 until end of turn.|
Arrest|Modern Masters 2015 Edition|9|C|{2}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature can't attack or block, and its activated abilities can't be activated.|
Profane Command|Modern Masters 2015 Edition|90|R|{X}{B}{B}|Sorcery|||Choose two -$• Target player loses X life.$• Return target creature card with converted mana cost X or less from your graveyard to the battlefield.$• Target creature gets -X/-X until end of turn.$• Up to X target creatures gain fear until end of turn. <i>(They can't be blocked except by artifact creatures and/or black creatures.)</i>|
Profane Command|Modern Masters 2015 Edition|90|R|{X}{B}{B}|Sorcery|||Choose two -$• Target player loses X life.$• Return target creature card with converted mana cost X or less from your graveyard to the battlefield.$• Target creature gets -X/-X until end of turn.$• Up to X target creatures gain fear until end of turn. <i>(They can't be blocked except by artifact creatures and/or black creatures.)</i>|
Puppeteer Clique|Modern Masters 2015 Edition|91|R|{3}{B}{B}|Creature - Faerie Wizard|3|2|Flying$When Puppeteer Clique enters the battlefield, put target creature card from an opponent's graveyard onto the battlefield under your control. It gains haste. At the beginning of your next end step, exile it.$Persist <i>(When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.)</i>|
Reassembling Skeleton|Modern Masters 2015 Edition|92|U|{1}{B}|Creature - Skeleton Warrior|1|1|{1}{B}: Return Reassembling Skeleton from your graveyard to the battlefield tapped.|
Scavenger Drake|Modern Masters 2015 Edition|93|U|{3}{B}|Creature - Drake|1|1|Flying$Whenever another creature dies, you may put a +1/+1 counter on Scavenger Drake.|
@ -26189,8 +26189,78 @@ Sickle Ripper|Modern Masters 2015 Edition|96|C|{1}{B}|Creature - Elemental Warri
Sign in Blood|Modern Masters 2015 Edition|97|C|{B}{B}|Sorcery|||Target player draws two cards and loses 2 life.|
Spread the Sickness|Modern Masters 2015 Edition|98|U|{4}{B}|Sorcery|||Destroy target creature, then proliferate. <i>(You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.)</i>|
Surgical Extraction|Modern Masters 2015 Edition|99|R|{BP}|Instant|||<i>({BP} can be paid with either {B} or 2 life.)</i>$Choose target card in a graveyard other than a basic land card. Search its owner's graveyard, hand, and library for any number of cards with the same name as that card and exile them. Then that player shuffles his or her library.|
Liliana, Heretical Healer|Magic Origins|106|M|{1}{B}{B}|Legendary Creature - Human Cleric|2|3|Lifelink$Whenever another nontoken creature you control dies, exile Liliana, Heretical Healer, then return her to the battlefield transformed under her owner's control. If you do, put a 2/2 black Zombie creature token onto the battlefield.|
Liliana, Defiant Necromancer|Magic Origins|106|M||Planeswalker - Liliana|||+2: Each player discards a card.$-X: Return target nonlegendary creature card with converted mana cost X from your graveyard to the battlefield.$-8: You get an emble with "Whenever a creature dies, return it to the battlefield under your control at the beginning of the next end step."|
Charging Griffin|Magic Origins|?|C|{3}{W}{3}{W}|Creature - Griffin|2|22|2|Flying$Whenever Charging Griffin attacks, it gets +1/+1 until end of turn.$Flying$Whenever Charging Griffin attacks, it gets +1/+1 until end of turn.|
Mighty Leap|Magic Origins|?|C|{1}{W}{1}{W}|Instant|||Target creature gets +2/+2 and gains flying until end of turn.$Target creature gets +2/+2 and gains flying until end of turn.|
Yoked Ox|Magic Origins|?|C|{W}{W}|Creature - Ox|0|40|4||
Akroan Jailer|Magic Origins|1|C|{W}|Creature - Human Soldier|1|1|{2}{W}, {T}: Tap target creature.|
Grasp of the Hieromancer|Magic Origins|15|C|{1}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +1/+1 and has "Whenever this creature attacks, tap target creature defending player controls."|
Heavy Infantry|Magic Origins|18|C|{4}{W}|Creature - Human Soldier|3|4|When Heavy Infantry enters the battlefield, tap target creature an opponent controls.|
Hixus, Prison Warden|Magic Origins|19|R|{3}{W}{W}{3}{W}{W}|Legendary Creature - Human Soldier|4|44|4|Flash$Whenever a creature deals combat damage to you, if Hixus, Prison Warden entered the battlefield this turn, exile that creature until Hixus leaves the battlefield.$Flash$Whenever a creature deals combat damage to you, if Hixus, Prison Warden entered the battlefield this turn, exile that creature until Hixus leaves the battlefield.|
Sentinel of the Eternal Watch|Magic Origins|30|U|{5}{W}|Creature - Giant Soldier|4|6|Vigilance <i>(Attacking doesn't cause this creature to tap.)</i>$At the beginning of combat on each opponent's turn, tap target creature that player controls.|
Valor in Akros|Magic Origins|39|U|{3}{W}|Enchantment|||Whenever a creature enters the battlefield under your control, creatures you control get +1/+1 until end of turn.|
Aegis Angel|Magic Origins|273|R|{4}{W}{W}{4}{W}{W}|Creature - Angel|5|55|5|Flying$When Aegis Angel enters the battlefield, another target permanent gains indestructible for as long as you control Aegis Angel.$Flying$When Aegis Angel enters the battlefield, another target permanent gains indestructible for as long as you control Aegis Angel.|
Divine Verdict|Magic Origins|274|C|{3}{W}{3}{W}|Instant|||Destroy target attacking or blocking creature.$Destroy target attacking or blocking creature.|
Eagle of the Watch|Magic Origins|275|C|{2}{W}|Creature - Bird|2|1|Flying, vigilance|
Serra Angel|Magic Origins|276|U|{3}{W}{W}{3}{W}{W}|Creature - Angel|4|44|4|Flying$Vigilance$Flying$Vigilance|
Claustrophobia|Magic Origins|?|C|{1}{U}{U}{1}{U}{U}|Enchantment - Aura|||$Enchant creature$When Claustrophobia enters the battlefield, tap enchanted creature.$Enchanted creature doesn't untap during its controller's untap step.$Enchant creature$When Claustrophobia enters the battlefield, tap enchanted creature.$Enchanted creature doesn't untap during its controller's untap step.|
Disperse|Magic Origins|?|C|{1}{U}{1}{U}|Instant|||Return target nonland permanent to its owner's hand.$Return target nonland permanent to its owner's hand.|
Maritime Guard|Magic Origins|?|C|{1}{U}{1}{U}|Creature - Merfolk Soldier|1|31|3||
Scrapskin Drake|Magic Origins|?|C|{2}{U}{2}{U}|Creature - Zombie Drake|2|32|3|Flying$Scrapskin Drake can block only creatures with flying.$Flying$Scrapskin Drake can block only creatures with flying.|
Tower Geist|Magic Origins|?|U|{3}{U}{3}{U}|Creature - Spirit|2|22|2|Flying$When Tower Geist enters the battlefield, look at the top two cards of your library. Put one of them into your hand and the other into your graveyard.$Flying$When Tower Geist enters the battlefield, look at the top two cards of your library. Put one of them into your hand and the other into your graveyard.|
Hydrolash|Magic Origins|59|U|{2}{U}|Instant|||Attacking creatures get -2/-0 until end of turn.$Draw a card.|
Jhessian Thief|Magic Origins|62|U|{2}{U}|Creature - Human Rogue|1|3|Prowess <i>(Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)</i>$Whenever Jhessian Thief deals combat damage to a player, draw a card.|
Ringwarden Owl|Magic Origins|068|C|{3}{U}{U}|Creature - Bird|3|3|Flying <i>(This creature can't be blocked except by creatures with flying or reach.)</i>$Prowess <i>(Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)</i>|
Separatist Voidmage|Magic Origins|72|C|{3}{U}|Creature - Human Wizard|2|2|When Separatist Voidmage enters the battlefield, you may return target creature to its owner's hand.|
Into the Void|Magic Origins|277|U|{3}{U}{3}{U}|Sorcery|||Return up to two target creatures to their owners' hands.$Return up to two target creatures to their owners' hands.|
Mahamoti Djinn|Magic Origins|278|R|{4}{U}{U}{4}{U}{U}|Creature - Djinn|5|65|6|Flying$Flying|
Weave Fate|Magic Origins|279|C|{3}{U}{3}{U}|Instant|||Draw two cards.$Draw two cards.|
Catacomb Slug|Magic Origins|?|C|{4}{B}{4}{B}|Creature - Slug|2|62|6||
Cruel Revival|Magic Origins|?|C|{4}{B}{4}{B}|Instant|||Destroy target non-Zombie creature. It can't be regenerated. Return up to one target Zombie card from your graveyard to your hand.$Destroy target non-Zombie creature. It can't be regenerated. Return up to one target Zombie card from your graveyard to your hand.|
Weight of the Underworld|Magic Origins|?|C|{3}{B}{3}{B}|Enchantment - Aura|||Enchant creature$Enchanted creature gets -3/-2.$Enchant creature$Enchanted creature gets -3/-2.|
Deadbridge Shaman|Magic Origins|91|C|{2}{B}|Creature - Elf Shaman|3|1|When Deadbridge Shaman dies, target opponent discards a card.|
Eyeblight Assassin|Magic Origins|95|C|{2}{B}|Creature - Elf Assassin|2|2|When Eyeblight Assassin enters the battlefield, target creature an opponent controls gets -1/-1 until end of turn.|
Liliana, Defiant Necromancer|Magic Origins|106|M||Planeswalker - Liliana|3|+2: Each player discards a card.$-X: Return target nonlegendary creature with converted mana cost X from your graveyard to the battlefield.$-8: You get an emblem with "Whenever a creature you control dies, return it to the battlefield under your control at the beginning of the next end step."|
Liliana, Heretical Healer|Magic Origins|106|M|{1}{B}{B}|Legendary Creature - Human Cleric|2|3|Lifelink$Whenever another nontoken creature you control dies, exile Liliana Heretical Healer, then return her to the battlefield transformed under her owner's control. If you do, put a 2/2 black Zombie creature token onto the battlefield.|
Malakir Cullblade|Magic Origins|108|U|{1}{B}|Creature - Vampire Warrior|1|1|Whenever a creature an opponent controls dies, put a +1/+1 counter on Malakir Cullblade.|
Rabid Bloodsucker|Magic Origins|113|C|{4}{B}|Creature - Vampire|3|2|Flying$When Rabid Bloodsucker enters the battlefield, each player loses 2 life.|
Reave Soul|Magic Origins|115|C|{1}{B}|Sorcery|||Destroy target creature with power 3 or less.|
Shambling Ghoul|Magic Origins|119|C|{1}{B}|Creature - Zombie|2|3|Shambling Ghoul enters the battlefield tapped.|
Flesh to Dust|Magic Origins|280|C|{3}{B}{B}{3}{B}{B}|Instant|||Destroy target creature. It can't be regenerated.$Destroy target creature. It can't be regenerated.|
Mind Rot|Magic Origins|281|C|{2}{B}{2}{B}|Sorcery|||Target player discards two cards.$Target player discards two cards.|
Nightmare|Magic Origins|282|R|{5}{B}{5}{B}|Creature - Nightmare Horse|0|00|0|Flying$Nightmare's power and toughness are each equal to the number of Swamps you control.$Flying$Nightmare's power and toughness are each equal to the number of Swamps you control.|
Sengir Vampire|Magic Origins|283|U|{3}{B}{B}{3}{B}{B}|Creature - Vampire|4|44|4|Flying$Whenever a creature dealt damage by Sengir Vampire this turn dies, put a +1/+1 counter on Sengir Vampire.$Flying$Whenever a creature dealt damage by Sengir Vampire this turn dies, put a +1/+1 counter on Sengir Vampire.|
Act of Treason|Magic Origins|?|C|{2}{R}{2}{R}|Sorcery|||Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn.$Gain control of target creature until end of turn. Untap that creature. It gains haste until end of turn.|
Chandra's Fury|Magic Origins|?|C|{4}{R}{4}{R}|Instant|||Chandra's Fury deals 4 damage to target player and 1 damage to each creature that player controls.$Chandra's Fury deals 4 damage to target player and 1 damage to each creature that player controls.|
Cobblebrute|Magic Origins|?|C|{3}{R}{3}{R}|Creature - Elemental|5|25|2||
Fiery Conclusion|Magic Origins|?|C|{1}{R}{1}{R}|Instant|||As an additional cost to cast Fiery Conclusion, sacrifice a creature.$Fiery Conclusion deals 5 damage to target creature.$As an additional cost to cast Fiery Conclusion, sacrifice a creature.$Fiery Conclusion deals 5 damage to target creature.|
Titan's Strength|Magic Origins|?|C|{R}{R}|Instant|||Target creature gets +3/+1 until end of turn. Scry 1.$Target creature gets +3/+1 until end of turn. Scry 1.|
Avaricious Dragon|Magic Origins|131|M|{2}{R}{R}|Creature - Dragon|4|4|Flying$At the beginning of your draw step, draw an additional card.$At the beginning of your end step, discard your hand.|
Bellows Lizard|Magic Origins|132|C|{R}{R}|Creature - Lizard|1|11|1|{1}{R}: Bellows Lizard gets +1/+0 until end of turn.${1}{R}: Bellows Lizard gets +1/+0 until end of turn.|
Boggart Brute|Magic Origins|133|C|{2}{R}|Creature - Goblin Warrior|3|2|Menace <i>(This creature can't be blocked except by two or more creatures.)</i>|
Enthralling Victor|Magic Origins|142|U|{3}{R}|Creature - Human Warrior|3|2|When Enthralling Victor enters the battlefield, gain control of target creature an opponent controls with power 2 or less until end of turn. Untap that creature. It gains haste until end of turn.|
Lightning Javelin|Magic Origins|153|C|{3}{R}|Sorcery|||Lightning Javelin deals 3 damage to target creature or player. Scry 1.|
Seismic Elemental|Magic Origins|161|U|{3}{R}{R}|Creature - Elemental|4|4|When Seismic Elemental enters the battlefield, creatures without flying can't block this turn.|
Subterranean Scout|Magic Origins|164|C|{1}{R}|Creature - Goblin Scout|2|1|When Subterranean Scout enters the battlefield, target creature with power 2 or less can't be blocked this turn.|
Volcanic Rambler|Magic Origins|167|C|{5}{R}|Creature - Elemental|6|4|{2}{R}: Volcanic Rambler deals 1 damage to target player.|
Fiery Hellhound|Magic Origins|284|C|{1}{R}{R}{1}{R}{R}|Creature - Elemental Hound|2|22|2|{R}: Fiery Hellhound gets +1/+0 until end of turn.${R}: Fiery Hellhound gets +1/+0 until end of turn.|
Shivan Dragon|Magic Origins|285|R|{4}{R}{R}{4}{R}{R}|Creature - Dragon|5|55|5|Flying${R}: Shivan Dragon gets +1/+0 until end of turn.$Flying${R}: Shivan Dragon gets +1/+0 until end of turn.|
Elvish Visionary|Magic Origins|?|C|{1}{G}{1}{G}|Creature - Elf Shaman|1|11|1|When Elvish Visionary enters the battlefield, draw a card.$When Elvish Visionary enters the battlefield, draw a card.|
Leaf Gilder|Magic Origins|?|C|{1}{G}{1}{G}|Creature - Elf Druid|2|12|1|{T}: Add {G} to your mana pool.${T}: Add {G} to your mana pool.|
Titanic Growth|Magic Origins|?|C|{1}{G}{1}{G}|Instant|||Target creature gets +4/+4 until end of turn.$Target creature gets +4/+4 until end of turn.|
Vastwood Gorger|Magic Origins|?|C|{5}{G}{5}{G}|Creature - Wurm|5|65|6||
Yeva's Forcemage|Magic Origins|?|C|{2}{G}{2}{G}|Creature - Elf Shaman|2|22|2|When Yeva's Forcemage enters the battlefield, target creature gets +2/+2 until end of turn.$When Yeva's Forcemage enters the battlefield, target creature gets +2/+2 until end of turn.|
Conclave Naturalists|Magic Origins|171|U|{4}{G}|Creature - Dryad|4|4|When Conclave Naturalists enters the battlefield, you may destroy target artifact or enchantment.|
Hitchclaw Recluse|Magic Origins|181|C|{2}{G}|Creature - Spider|1|4|Reach|
Joraga Invocation|Magic Origins|183|U|{4}{G}{G}|Sorcery|||Each creature you control gets +3/+3 until end of turn and must be blocked this turn if able.|
Mantle of Webs|Magic Origins|187|C|{1}{G}|Enchantment - Aura|||Enchant Creature$Enchanted creature gets +1/+3 and has reach.|
Plummet|Magic Origins|286|C|{1}{G}{1}{G}|Instant|||Destroy target creature with flying.$Destroy target creature with flying.|
Prized Unicorn|Magic Origins|287|U|{3}{G}{3}{G}|Creature - Unicorn|2|22|2|All creatures able to block Prized Unicorn do so.$All creatures able to block Prized Unicorn do so.|
Terra Stomper|Magic Origins|288|R|{3}{G}{G}{G}{3}{G}{G}{G}|Creature - Beast|8|88|8|Terra Stomper can't be countered.$Trample$Terra Stomper can't be countered.$Trample|
Meteorite|Magic Origins|?|U|{5}{5}|Artifact|||When Meteorite enters the battlefield, it deals 2 damage to target creature or player.${T}: Add one mana of any color to your mana pool.$When Meteorite enters the battlefield, it deals 2 damage to target creature or player.${T}: Add one mana of any color to your mana pool.|
Gold-Forged Sentinel|Magic Origins|?|U|{6}{6}|Artifact Creature - Chimera|4|44|4|Flying$Flying|
Runed Servitor|Magic Origins|?|U|{2}{2}|Artifact Creature - Construct|2|22|2|When Runed Servitor dies, each player draws a card.$When Runed Servitor dies, each player draws a card.|
Jayemdae Tome|Magic Origins|?|U|{4}{4}|Artifact|||{4}, {T}: Draw a card.${4}, {T}: Draw a card.|
Veteran's Sidearm|Magic Origins|242|C|{2}|Artifact - Equipment|||Equipped creature gets +1/+1.$Equip {1}|
Ambush Commander|Duel Decks: Anthology, Elves vs. Goblins|1|R|{3}{G}{G}|Creature - Elf|2|2|Forests you control are 1/1 green Elf creatures that are still lands.${1}{G}, Sacrifice an Elf: Target creature gets +3/+3 until end of turn.|
Lys Alana Huntmaster|Duel Decks: Anthology, Elves vs. Goblins|10|C|{2}{G}{G}|Creature - Elf Warrior|3|3|Whenever you cast an Elf spell, you may put a 1/1 green Elf Warrior creature token onto the battlefield.|
Stonewood Invoker|Duel Decks: Anthology, Elves vs. Goblins|11|C|{1}{G}|Creature - Elf Mutant|2|2|{7}{G}: Stonewood Invoker gets +5/+5 until end of turn.|
@ -26486,7 +26556,7 @@ Surrakar Banisher|Duel Decks: Elspeth vs. Kiora|43|C|{4}{U}|Creature - Surrakar|
Whelming Wave|Duel Decks: Elspeth vs. Kiora|44|R|{2}{U}{U}|Sorcery|||Return all creatures to their owners' hands except for Krakens, Leviathans, Octopuses, and Serpents.|
Explore|Duel Decks: Elspeth vs. Kiora|45|C|{1}{G}|Sorcery|||You may play an additional land this turn.$Draw a card.|
Explosive Vegetation|Duel Decks: Elspeth vs. Kiora|46|U|{3}{G}|Sorcery|||Search your library for up to two basic land cards and put them onto the battlefield tapped. Then shuffle your library.|
Grazing Gladehart|Duel Decks: Elspeth vs. Kiora|47|C|{2}{G}|Creature - Antelope|2|2|Landfall Whenever a land enters the battlefield under your control, you may gain 2 life.|
Grazing Gladehart|Duel Decks: Elspeth vs. Kiora|47|C|{2}{G}|Creature - Antelope|2|2|Landfall — Whenever a land enters the battlefield under your control, you may gain 2 life.|
Nessian Asp|Duel Decks: Elspeth vs. Kiora|48|C|{4}{G}|Creature - Snake|4|5|Reach${6}{G}: Monstrosity 4. <i>(If this creature isn't monstrous, put four +1/+1 counters on it and it becomes monstrous.)</i>|
Netcaster Spider|Duel Decks: Elspeth vs. Kiora|49|C|{2}{G}|Creature - Spider|2|3|Reach <i>(This creature can block creatures with flying.)</i>$Whenever Netcaster Spider blocks a creature with flying, Netcaster Spider gets +2/+0 until end of turn.|
Time to Feed|Duel Decks: Elspeth vs. Kiora|50|C|{2}{G}|Sorcery|||Choose target creature an opponent controls. When that creature dies this turn, you gain 3 life. Target creature you control fights that creature. <i>(Each deals damage equal to its power to the other.)</i>|
@ -26557,7 +26627,7 @@ Day of Judgment|Magic Player Rewards|49|Special|{2}{W}{W}|Sorcery|||Destroy all
Brave the Elements|Magic Player Rewards|50|Special|{W}|Instant|||Choose a color. White creatures you control gain protection from the chosen color until end of turn.|
Doom Blade|Magic Player Rewards|51|Special|{1}{B}|Instant|||Destroy target nonblack creature.|
Treasure Hunt|Magic Player Rewards|52|Special|{1}{U}|Sorcery|||Reveal cards from the top of your library until you reveal a nonland card, then put all cards revealed this way into your hand.|
Searing Blaze|Magic Player Rewards|53|Special|{R}{R}|Instant|||Searing Blaze deals 1 damage to target player and 1 damage to target creature that player controls.$Landfall If you had a land enter the battlefield under your control this turn, Searing Blaze deals 3 damage to that player and 3 damage to that creature instead.|
Searing Blaze|Magic Player Rewards|53|Special|{R}{R}|Instant|||Searing Blaze deals 1 damage to target player and 1 damage to target creature that player controls.$Landfall — If you had a land enter the battlefield under your control this turn, Searing Blaze deals 3 damage to that player and 3 damage to that creature instead.|
Angelic Blessing|Tempest Remastered|1|C|{2}{W}|Sorcery|||Target creature gets +3/+3 and gains flying until end of turn.|
Angelic Protector|Tempest Remastered|2|U|{3}{W}|Creature - Angel|2|2|Flying$Whenever Angelic Protector becomes the target of a spell or ability, Angelic Protector gets +0/+3 until end of turn.|
Anoint|Tempest Remastered|3|C|{W}|Instant|||Buyback {3} <i>(You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)</i>$Prevent the next 3 damage that would be dealt to target creature this turn.|