Merge origin/master

This commit is contained in:
fireshoes 2015-06-30 18:52:32 -05:00
commit dbe2dc4e7f
76 changed files with 1551 additions and 251 deletions

View file

@ -155,7 +155,7 @@
<Component class="javax.swing.JCheckBox" name="showToolTipsInAnyZone"> <Component class="javax.swing.JCheckBox" name="showToolTipsInAnyZone">
<Properties> <Properties>
<Property name="selected" type="boolean" value="true"/> <Property name="selected" type="boolean" value="true"/>
<Property name="text" type="java.lang.String" value="Show card tooltips while hoovering with the mouse pointer over a card"/> <Property name="text" type="java.lang.String" value="Show card tooltips while hovering with the mouse pointer over a card"/>
<Property name="toolTipText" type="java.lang.String" value=""/> <Property name="toolTipText" type="java.lang.String" value=""/>
<Property name="actionCommand" type="java.lang.String" value=""/> <Property name="actionCommand" type="java.lang.String" value=""/>
<Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor"> <Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
@ -253,7 +253,7 @@
<Properties> <Properties>
<Property name="selected" type="boolean" value="true"/> <Property name="selected" type="boolean" value="true"/>
<Property name="text" type="java.lang.String" value="Show player names on avatar permanently"/> <Property name="text" type="java.lang.String" value="Show player names on avatar permanently"/>
<Property name="toolTipText" type="java.lang.String" value="Instead showing the names only if you hoover over the avatar with the mouse, the name is shown all the time."/> <Property name="toolTipText" type="java.lang.String" value="Instead showing the names only if you hover over the avatar with the mouse, the name is shown all the time."/>
<Property name="horizontalAlignment" type="int" value="2"/> <Property name="horizontalAlignment" type="int" value="2"/>
</Properties> </Properties>
<Events> <Events>

View file

@ -474,7 +474,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
}); });
showToolTipsInAnyZone.setSelected(true); showToolTipsInAnyZone.setSelected(true);
showToolTipsInAnyZone.setText("Show card tooltips while hoovering with the mouse pointer over a card"); showToolTipsInAnyZone.setText("Show card tooltips while hovering with the mouse pointer over a card");
showToolTipsInAnyZone.setToolTipText(""); showToolTipsInAnyZone.setToolTipText("");
showToolTipsInAnyZone.setActionCommand(""); showToolTipsInAnyZone.setActionCommand("");
showToolTipsInAnyZone.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); showToolTipsInAnyZone.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
@ -533,7 +533,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
showPlayerNamesPermanently.setSelected(true); showPlayerNamesPermanently.setSelected(true);
showPlayerNamesPermanently.setText("Show player names on avatar permanently"); showPlayerNamesPermanently.setText("Show player names on avatar permanently");
showPlayerNamesPermanently.setToolTipText("Instead showing the names only if you hoover over the avatar with the mouse, the name is shown all the time."); showPlayerNamesPermanently.setToolTipText("Instead showing the names only if you hover over the avatar with the mouse, the name is shown all the time.");
showPlayerNamesPermanently.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); showPlayerNamesPermanently.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
showPlayerNamesPermanently.addActionListener(new java.awt.event.ActionListener() { showPlayerNamesPermanently.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) { public void actionPerformed(java.awt.event.ActionEvent evt) {

View file

@ -388,7 +388,7 @@ public class MageActionCallback implements ActionCallback {
/** /**
* Hides the text popup window * Hides the text popup window
* *
*/ */
@Override @Override
public void hidePopup() { public void hidePopup() {
@ -445,7 +445,7 @@ public class MageActionCallback implements ActionCallback {
} }
} }
return; return;
} }
if (notches < 0) { if (notches < 0) {
// move up - show normal image // move up - show normal image
enlargeCard(EnlargeMode.NORMAL); enlargeCard(EnlargeMode.NORMAL);
@ -456,7 +456,7 @@ public class MageActionCallback implements ActionCallback {
} }
/** /**
* Show the big card image on mouse position while hoovering over a card * Show the big card image on mouse position while hovering over a card
* *
* @param showAlternative defines if the original image (if it's a copied card) or the opposite side of a transformable card will be shown * @param showAlternative defines if the original image (if it's a copied card) or the opposite side of a transformable card will be shown
*/ */
@ -489,7 +489,7 @@ public class MageActionCallback implements ActionCallback {
cardPreviewContainer.setVisible(false); cardPreviewContainer.setVisible(false);
cardPreviewContainer = MageFrame.getUI().getComponent(MageComponents.CARD_PREVIEW_CONTAINER_ROTATED); cardPreviewContainer = MageFrame.getUI().getComponent(MageComponents.CARD_PREVIEW_CONTAINER_ROTATED);
cardPreviewContainer.setVisible(false); cardPreviewContainer.setVisible(false);
} catch (InterruptedException e) { } catch (InterruptedException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -538,7 +538,7 @@ public class MageActionCallback implements ActionCallback {
location.translate(-parentPoint.x, -parentPoint.y); location.translate(-parentPoint.x, -parentPoint.y);
popupContainer.setLocation(location); popupContainer.setLocation(location);
popupContainer.setVisible(true); popupContainer.setVisible(true);
MageCard mageCard = (MageCard) transferData.component; MageCard mageCard = (MageCard) transferData.component;
Image image = null; Image image = null;
switch (enlargeMode) { switch (enlargeMode) {

View file

@ -99,12 +99,12 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti
public JPanel buttonPanel; public JPanel buttonPanel;
private JButton dayNightButton; private JButton dayNightButton;
public JPanel copyIconPanel; public JPanel copyIconPanel;
private JButton showCopySourceButton; private JButton showCopySourceButton;
public JPanel iconPanel; public JPanel iconPanel;
private JButton typeButton; private JButton typeButton;
public JPanel counterPanel; public JPanel counterPanel;
private JLabel loyaltyCounterLabel; private JLabel loyaltyCounterLabel;
private JLabel plusCounterLabel; private JLabel plusCounterLabel;
@ -125,7 +125,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti
private boolean isSelected; private boolean isSelected;
private boolean isPlayable; private boolean isPlayable;
private boolean isChoosable; private boolean isChoosable;
private boolean canAttack; private boolean canAttack;
private boolean showCastingCost; private boolean showCastingCost;
private boolean hasImage = false; private boolean hasImage = false;
private float alpha = 1.0f; private float alpha = 1.0f;
@ -151,7 +151,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti
private JPanel cardArea; private JPanel cardArea;
private int yTextOffset = 10; private int yTextOffset = 10;
public CardPanel(CardView newGameCard, UUID gameId, final boolean loadImage, ActionCallback callback, final boolean foil, Dimension dimension) { public CardPanel(CardView newGameCard, UUID gameId, final boolean loadImage, ActionCallback callback, final boolean foil, Dimension dimension) {
this.gameCard = newGameCard; this.gameCard = newGameCard;
this.callback = callback; this.callback = callback;
@ -224,12 +224,12 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti
if (AbilityType.TRIGGERED.equals(newGameCard.getAbilityType())) { if (AbilityType.TRIGGERED.equals(newGameCard.getAbilityType())) {
setTypeIcon(ImageManagerImpl.getInstance().getTriggeredAbilityImage(),"Triggered Ability"); setTypeIcon(ImageManagerImpl.getInstance().getTriggeredAbilityImage(),"Triggered Ability");
} else if (AbilityType.ACTIVATED.equals(newGameCard.getAbilityType())) { } else if (AbilityType.ACTIVATED.equals(newGameCard.getAbilityType())) {
setTypeIcon(ImageManagerImpl.getInstance().getActivatedAbilityImage(),"Activated Ability"); setTypeIcon(ImageManagerImpl.getInstance().getActivatedAbilityImage(),"Activated Ability");
} }
} }
if (this.gameCard.isToken()) { if (this.gameCard.isToken()) {
setTypeIcon(ImageManagerImpl.getInstance().getTokenIconImage(),"Token Permanent"); setTypeIcon(ImageManagerImpl.getInstance().getTokenIconImage(),"Token Permanent");
} }
// icon to inform about permanent is copying something // icon to inform about permanent is copying something
@ -242,7 +242,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti
showCopySourceButton = new JButton(""); showCopySourceButton = new JButton("");
showCopySourceButton.setLocation(2, 2); showCopySourceButton.setLocation(2, 2);
showCopySourceButton.setSize(25, 25); showCopySourceButton.setSize(25, 25);
showCopySourceButton.setToolTipText("This permanent is copying a target. To see original image, push this button or turn mouse wheel down while hoovering with the mouse pointer over the permanent."); showCopySourceButton.setToolTipText("This permanent is copying a target. To see original image, push this button or turn mouse wheel down while hovering with the mouse pointer over the permanent.");
copyIconPanel.setVisible(((PermanentView) this.gameCard).isCopy()); copyIconPanel.setVisible(((PermanentView) this.gameCard).isCopy());
showCopySourceButton.setIcon(new ImageIcon(ImageManagerImpl.getInstance().getCopyInformIconImage())); showCopySourceButton.setIcon(new ImageIcon(ImageManagerImpl.getInstance().getCopyInformIconImage()));
@ -265,7 +265,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti
addMouseMotionListener(this); addMouseMotionListener(this);
addMouseWheelListener(this); addMouseWheelListener(this);
addComponentListener(this); addComponentListener(this);
displayTitleAnyway = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_SHOW_CARD_NAMES, "true").equals("true"); displayTitleAnyway = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_SHOW_CARD_NAMES, "true").equals("true");
titleText = new GlowText(); titleText = new GlowText();
setText(gameCard); setText(gameCard);
@ -274,7 +274,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti
titleText.setGlow(Color.black, TEXT_GLOW_SIZE, TEXT_GLOW_INTENSITY); titleText.setGlow(Color.black, TEXT_GLOW_SIZE, TEXT_GLOW_INTENSITY);
titleText.setWrap(true); titleText.setWrap(true);
add(titleText); add(titleText);
ptText = new GlowText(); ptText = new GlowText();
if (CardUtil.isCreature(gameCard)) { if (CardUtil.isCreature(gameCard)) {
ptText.setText(gameCard.getPower() + "/" + gameCard.getToughness()); ptText.setText(gameCard.getPower() + "/" + gameCard.getToughness());
@ -350,9 +350,9 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti
if (toolTipText != null) { if (toolTipText != null) {
typeButton.setToolTipText(toolTipText); typeButton.setToolTipText(toolTipText);
} }
iconPanel.add(typeButton); iconPanel.add(typeButton);
} }
public void cleanUp() { public void cleanUp() {
if (dayNightButton != null) { if (dayNightButton != null) {
for(ActionListener al: dayNightButton.getActionListeners()) { for(ActionListener al: dayNightButton.getActionListeners()) {
@ -596,7 +596,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti
int offsetX = Math.round((CARD_SIZE_FULL.width - cardWidth) / 10.0f); int offsetX = Math.round((CARD_SIZE_FULL.width - cardWidth) / 10.0f);
ptText.setLocation(cardXOffset + ptX - TEXT_GLOW_SIZE / 2 - offsetX, cardYOffset + ptY - TEXT_GLOW_SIZE / 2); ptText.setLocation(cardXOffset + ptX - TEXT_GLOW_SIZE / 2 - offsetX, cardYOffset + ptY - TEXT_GLOW_SIZE / 2);
if (isAnimationPanel || cardWidth < 200) { if (isAnimationPanel || cardWidth < 200) {
imagePanel.setScalingType(ScalingType.nearestNeighbor); imagePanel.setScalingType(ScalingType.nearestNeighbor);
} else { } else {
@ -842,7 +842,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti
dayNightButton.setIcon(new ImageIcon(transformIcon)); dayNightButton.setIcon(new ImageIcon(transformIcon));
} }
} }
if (counterPanel != null) { if (counterPanel != null) {
updateCounters(card); updateCounters(card);
} }
@ -1161,7 +1161,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti
this.gameCard = this.temporary; this.gameCard = this.temporary;
this.temporary = null; this.temporary = null;
update(this.gameCard); update(this.gameCard);
} }
} }
String temp = this.gameCard.getAlternateName(); String temp = this.gameCard.getAlternateName();
this.gameCard.setAlternateName(this.gameCard.getOriginalName()); this.gameCard.setAlternateName(this.gameCard.getOriginalName());

View file

@ -39,9 +39,9 @@ import mage.constants.Rarity;
* *
* @author Sir-Speshkitty * @author Sir-Speshkitty
*/ */
public class AesthirGlider extends CardImpl { public class AesthirGlider1 extends CardImpl {
public AesthirGlider(UUID ownerId) { public AesthirGlider1(UUID ownerId) {
super(ownerId, 156, "Aesthir Glider", Rarity.COMMON, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}"); super(ownerId, 156, "Aesthir Glider", Rarity.COMMON, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
this.expansionSetCode = "ALL"; this.expansionSetCode = "ALL";
this.subtype.add("Bird"); this.subtype.add("Bird");
@ -54,12 +54,12 @@ public class AesthirGlider extends CardImpl {
this.addAbility(new CantBlockAbility()); this.addAbility(new CantBlockAbility());
} }
public AesthirGlider(final AesthirGlider card) { public AesthirGlider1(final AesthirGlider1 card) {
super(card); super(card);
} }
@Override @Override
public AesthirGlider copy() { public AesthirGlider1 copy() {
return new AesthirGlider(this); return new AesthirGlider1(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.alliances;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public class AesthirGlider2 extends mage.sets.alliances.AesthirGlider1 {
public AesthirGlider2(UUID ownerId) {
super(ownerId);
this.cardNumber = 157;
this.expansionSetCode = "ALL";
}
public AesthirGlider2(final AesthirGlider2 card) {
super(card);
}
@Override
public AesthirGlider2 copy() {
return new AesthirGlider2(this);
}
}

View file

@ -53,9 +53,9 @@ import mage.target.common.TargetControlledPermanent;
* *
* @author Quercitron * @author Quercitron
*/ */
public class SoldeviSage extends CardImpl { public class SoldeviSage1 extends CardImpl {
public SoldeviSage(UUID ownerId) { public SoldeviSage1(UUID ownerId) {
super(ownerId, 51, "Soldevi Sage", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{U}"); super(ownerId, 51, "Soldevi Sage", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{U}");
this.expansionSetCode = "ALL"; this.expansionSetCode = "ALL";
this.subtype.add("Human"); this.subtype.add("Human");
@ -70,13 +70,13 @@ public class SoldeviSage extends CardImpl {
this.addAbility(ability); this.addAbility(ability);
} }
public SoldeviSage(final SoldeviSage card) { public SoldeviSage1(final SoldeviSage1 card) {
super(card); super(card);
} }
@Override @Override
public SoldeviSage copy() { public SoldeviSage1 copy() {
return new SoldeviSage(this); return new SoldeviSage1(this);
} }
} }
@ -86,7 +86,7 @@ class SoldeviSageEffect extends OneShotEffect {
super(Outcome.DrawCard); super(Outcome.DrawCard);
this.staticText = "Draw three cards, then discard one of them"; this.staticText = "Draw three cards, then discard one of them";
} }
public SoldeviSageEffect(final SoldeviSageEffect effect) { public SoldeviSageEffect(final SoldeviSageEffect effect) {
super(effect); super(effect);
} }
@ -95,7 +95,7 @@ class SoldeviSageEffect extends OneShotEffect {
public SoldeviSageEffect copy() { public SoldeviSageEffect copy() {
return new SoldeviSageEffect(this); return new SoldeviSageEffect(this);
} }
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId()); Player player = game.getPlayer(source.getControllerId());
@ -108,7 +108,7 @@ class SoldeviSageEffect extends OneShotEffect {
drawnCards.add(cardId); drawnCards.add(cardId);
} }
} }
if (drawnCards.size() > 0) { if (drawnCards.size() > 0) {
TargetCard cardToDiscard = new TargetCard(Zone.PICK, new FilterCard("card to discard")); TargetCard cardToDiscard = new TargetCard(Zone.PICK, new FilterCard("card to discard"));
cardToDiscard.setNotTarget(true); cardToDiscard.setNotTarget(true);
@ -119,10 +119,10 @@ class SoldeviSageEffect extends OneShotEffect {
} }
} }
} }
return true; return true;
} }
return false; return false;
} }
} }

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.alliances;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public class SoldeviSage2 extends mage.sets.alliances.SoldeviSage1 {
public SoldeviSage2(UUID ownerId) {
super(ownerId);
this.cardNumber = 52;
this.expansionSetCode = "ALL";
}
public SoldeviSage2(final SoldeviSage2 card) {
super(card);
}
@Override
public SoldeviSage2 copy() {
return new SoldeviSage2(this);
}
}

View file

@ -32,7 +32,7 @@ import mage.constants.Rarity;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.filter.common.FilterEnchantment; import mage.filter.common.FilterEnchantmentPermanent;
import mage.filter.common.FilterLandPermanent; import mage.filter.common.FilterLandPermanent;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.common.TargetArtifactPermanent; import mage.target.common.TargetArtifactPermanent;
@ -59,7 +59,7 @@ public class RainOfThorns extends CardImpl {
Mode mode1 = new Mode(); Mode mode1 = new Mode();
mode1.getEffects().add(new DestroyTargetEffect()); mode1.getEffects().add(new DestroyTargetEffect());
mode1.getTargets().add(new TargetPermanent(new FilterEnchantment())); mode1.getTargets().add(new TargetPermanent(new FilterEnchantmentPermanent()));
this.getSpellAbility().addMode(mode1); this.getSpellAbility().addMode(mode1);
Mode mode2 = new Mode(); Mode mode2 = new Mode();

View file

@ -42,7 +42,7 @@ import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.FlipSourceEffect; import mage.abilities.effects.common.FlipSourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.filter.common.FilterEnchantment; import mage.filter.common.FilterEnchantmentPermanent;
import mage.filter.predicate.Predicate; import mage.filter.predicate.Predicate;
import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.game.Game; import mage.game.Game;
@ -88,7 +88,7 @@ public class KitsuneMystic extends CardImpl {
class AutumnTailKitsuneSage extends Token { class AutumnTailKitsuneSage extends Token {
private static final FilterEnchantment filter = new FilterEnchantment("Aura attached to a creature"); private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Aura attached to a creature");
static { static {
filter.add(new AttachmentAttachedToCardTypePredicate(CardType.CREATURE)); filter.add(new AttachmentAttachedToCardTypePredicate(CardType.CREATURE));

View file

@ -34,7 +34,7 @@ import mage.constants.Rarity;
* *
* @author Quercitron * @author Quercitron
*/ */
public class SoldeviSage extends mage.sets.alliances.SoldeviSage { public class SoldeviSage extends mage.sets.alliances.SoldeviSage1 {
public SoldeviSage(UUID ownerId) { public SoldeviSage(UUID ownerId) {
super(ownerId); super(ownerId);

View file

@ -37,6 +37,7 @@ import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.Rarity; import mage.constants.Rarity;
import mage.constants.SetTargetPointer;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.CardTypePredicate;
@ -49,7 +50,7 @@ import mage.game.stack.Spell;
* @author emerald000 * @author emerald000
*/ */
public class Dovescape extends CardImpl { public class Dovescape extends CardImpl {
private static final FilterSpell filter = new FilterSpell("a noncreature spell"); private static final FilterSpell filter = new FilterSpell("a noncreature spell");
static { static {
filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE)));
@ -61,7 +62,7 @@ public class Dovescape extends CardImpl {
// Whenever a player casts a noncreature spell, counter that spell. That player puts X 1/1 white and blue Bird creature tokens with flying onto the battlefield, where X is the spell's converted mana cost. // Whenever a player casts a noncreature spell, counter that spell. That player puts X 1/1 white and blue Bird creature tokens with flying onto the battlefield, where X is the spell's converted mana cost.
this.addAbility(new SpellCastAllTriggeredAbility(new DovescapeEffect(), filter, false, true)); this.addAbility(new SpellCastAllTriggeredAbility(new DovescapeEffect(), filter, false, SetTargetPointer.SPELL));
} }
public Dovescape(final Dovescape card) { public Dovescape(final Dovescape card) {
@ -75,21 +76,21 @@ public class Dovescape extends CardImpl {
} }
class DovescapeEffect extends OneShotEffect { class DovescapeEffect extends OneShotEffect {
DovescapeEffect() { DovescapeEffect() {
super(Outcome.Benefit); super(Outcome.Benefit);
this.staticText = "counter that spell. That player puts X 1/1 white and blue Bird creature tokens with flying onto the battlefield, where X is the spell's converted mana cost"; this.staticText = "counter that spell. That player puts X 1/1 white and blue Bird creature tokens with flying onto the battlefield, where X is the spell's converted mana cost";
} }
DovescapeEffect(final DovescapeEffect effect) { DovescapeEffect(final DovescapeEffect effect) {
super(effect); super(effect);
} }
@Override @Override
public DovescapeEffect copy() { public DovescapeEffect copy() {
return new DovescapeEffect(this); return new DovescapeEffect(this);
} }
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Spell spell = game.getStack().getSpell(this.getTargetPointer().getFirst(game, source)); Spell spell = game.getStack().getSpell(this.getTargetPointer().getFirst(game, source));

View file

@ -32,7 +32,7 @@ import mage.constants.CardType;
import mage.constants.Rarity; import mage.constants.Rarity;
import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.SplitCard; import mage.cards.SplitCard;
import mage.filter.common.FilterEnchantment; import mage.filter.common.FilterEnchantmentPermanent;
import mage.target.Target; import mage.target.Target;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.common.TargetArtifactPermanent; import mage.target.common.TargetArtifactPermanent;
@ -56,7 +56,7 @@ public class WearTear extends SplitCard {
// Tear // Tear
// Destroy target enchantment. // Destroy target enchantment.
getRightHalfCard().getSpellAbility().addEffect(new DestroyTargetEffect()); getRightHalfCard().getSpellAbility().addEffect(new DestroyTargetEffect());
target = new TargetPermanent(new FilterEnchantment()); target = new TargetPermanent(new FilterEnchantmentPermanent());
getRightHalfCard().getSpellAbility().addTarget(target); getRightHalfCard().getSpellAbility().addTarget(target);
} }

View file

@ -33,7 +33,7 @@ import java.util.UUID;
* *
* @author anonymous * @author anonymous
*/ */
public class OrcishSpy extends mage.sets.fallenempires.OrcishSpy { public class OrcishSpy extends mage.sets.fallenempires.OrcishSpy1 {
public OrcishSpy(UUID ownerId) { public OrcishSpy(UUID ownerId) {
super(ownerId); super(ownerId);

View file

@ -41,8 +41,8 @@ import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.Rarity; import mage.constants.Rarity;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.game.permanent.token.Token; import mage.game.permanent.token.Token;
import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent;
@ -55,9 +55,11 @@ import mage.target.common.TargetCreaturePermanent;
public class AmbushCommander extends CardImpl { public class AmbushCommander extends CardImpl {
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("an Elf"); private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("an Elf");
private static final FilterControlledPermanent filter2 = new FilterControlledPermanent("Forests you control");
static { static {
filter.add(new SubtypePredicate("Elf")); filter.add(new SubtypePredicate("Elf"));
filter2.add(new SubtypePredicate("Forest"));
} }
public AmbushCommander(UUID ownerId) { public AmbushCommander(UUID ownerId) {
@ -69,9 +71,11 @@ public class AmbushCommander extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Forests you control are 1/1 green Elf creatures that are still lands. // Forests you control are 1/1 green Elf creatures that are still lands.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesCreatureAllEffect(new AmbushCommanderToken(), "lands", new FilterPermanent("Forest", "Forests"), Duration.WhileOnBattlefield))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BecomesCreatureAllEffect(new AmbushCommanderToken(),
"lands", filter2, Duration.WhileOnBattlefield)));
// {1}{G}, Sacrifice an Elf: Target creature gets +3/+3 until end of turn. // {1}{G}, Sacrifice an Elf: Target creature gets +3/+3 until end of turn.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(3,3, Duration.EndOfTurn), new ManaCostsImpl("{1}{G}")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(3,3, Duration.EndOfTurn),
new ManaCostsImpl("{1}{G}"));
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1,1, filter, true))); ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1,1, filter, true)));
ability.addTarget(new TargetCreaturePermanent()); ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability); this.addAbility(ability);
@ -97,4 +101,4 @@ class AmbushCommanderToken extends Token {
color.setGreen(true); color.setGreen(true);
} }
} }

View file

@ -40,11 +40,11 @@ import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.Rarity; import mage.constants.Rarity;
import mage.constants.SetTargetPointer;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.ColorPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.stack.Spell;
import mage.players.Player; import mage.players.Player;
/** /**
@ -52,9 +52,9 @@ import mage.players.Player;
* @author jeffwadsworth * @author jeffwadsworth
*/ */
public class SootImp extends CardImpl { public class SootImp extends CardImpl {
static final private FilterSpell filter = new FilterSpell("a nonblack spell"); static final private FilterSpell filter = new FilterSpell("a nonblack spell");
static { static {
filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK))); filter.add(Predicates.not(new ColorPredicate(ObjectColor.BLACK)));
} }
@ -69,10 +69,10 @@ public class SootImp extends CardImpl {
// Flying // Flying
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
// Whenever a player casts a nonblack spell, that player loses 1 life. // Whenever a player casts a nonblack spell, that player loses 1 life.
this.addAbility(new SpellCastAllTriggeredAbility(new SootImpEffect(), filter, false, true)); this.addAbility(new SpellCastAllTriggeredAbility(new SootImpEffect(), filter, false, SetTargetPointer.PLAYER));
} }
public SootImp(final SootImp card) { public SootImp(final SootImp card) {
@ -103,11 +103,7 @@ class SootImpEffect extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Spell spell = game.getStack().getSpell(targetPointer.getFirst(game, source)); Player caster = game.getPlayer(targetPointer.getFirst(game, source));
Player caster = null;
if (spell != null) {
caster = game.getPlayer(spell.getControllerId());
}
if (caster != null) { if (caster != null) {
caster.loseLife(1, game); caster.loseLife(1, game);
return true; return true;

View file

@ -0,0 +1,103 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
package mage.sets.exodus;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SpellCastAllTriggeredAbility;
import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Rarity;
import mage.constants.SetTargetPointer;
import mage.constants.Zone;
import mage.filter.FilterSpell;
import mage.filter.common.FilterLandPermanent;
import mage.filter.predicate.permanent.ControllerIdPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetLandPermanent;
/**
*
* @author LoneFox
*/
public class ManaBreach extends CardImpl {
public ManaBreach(UUID ownerId) {
super(ownerId, 38, "Mana Breach", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
this.expansionSetCode = "EXO";
// Whenever a player casts a spell, that player returns a land he or she controls to its owner's hand.
this.addAbility(new SpellCastAllTriggeredAbility(new ManaBreachEffect(), new FilterSpell(), false, SetTargetPointer.PLAYER));
}
public ManaBreach(final ManaBreach card) {
super(card);
}
@Override
public ManaBreach copy() {
return new ManaBreach(this);
}
}
class ManaBreachEffect extends OneShotEffect {
public ManaBreachEffect() {
super(Outcome.Detriment);
staticText="that player returns a land he or she controls to its owner's hand.";
}
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(targetPointer.getFirst(game, source));
if(player != null) {
FilterLandPermanent filter = new FilterLandPermanent("a land you control");
filter.add(new ControllerIdPredicate(player.getId()));
TargetLandPermanent toBounce = new TargetLandPermanent(1, 1, filter, true);
if(player.chooseTarget(Outcome.ReturnToHand, toBounce, source, game)) {
Permanent land = game.getPermanent(toBounce.getTargets().get(0));
land.moveToZone(Zone.HAND, source.getSourceId(), game, false);
}
return true;
}
return false;
}
public ManaBreachEffect(final ManaBreachEffect effect) {
super(effect);
}
public ManaBreachEffect copy() {
return new ManaBreachEffect(this);
}
}

View file

@ -43,14 +43,14 @@ import mage.filter.predicate.mageobject.PowerPredicate;
* *
* @author dustinconrad * @author dustinconrad
*/ */
public class BrassclawOrcs extends CardImpl { public class BrassclawOrcs1 extends CardImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or greater"); private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures with power 2 or greater");
static { static {
filter.add(new PowerPredicate(Filter.ComparisonType.GreaterThan, 1)); filter.add(new PowerPredicate(Filter.ComparisonType.GreaterThan, 1));
} }
public BrassclawOrcs(UUID ownerId) { public BrassclawOrcs1(UUID ownerId) {
super(ownerId, 100, "Brassclaw Orcs", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{R}"); super(ownerId, 100, "Brassclaw Orcs", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{R}");
this.expansionSetCode = "FEM"; this.expansionSetCode = "FEM";
this.subtype.add("Orc"); this.subtype.add("Orc");
@ -63,12 +63,12 @@ public class BrassclawOrcs extends CardImpl {
} }
public BrassclawOrcs(final BrassclawOrcs card) { public BrassclawOrcs1(final BrassclawOrcs1 card) {
super(card); super(card);
} }
@Override @Override
public BrassclawOrcs copy() { public BrassclawOrcs1 copy() {
return new BrassclawOrcs(this); return new BrassclawOrcs1(this);
} }
} }

View file

@ -1,16 +1,16 @@
/* /*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without modification, are * Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met: * permitted provided that the following conditions are met:
* *
* 1. Redistributions of source code must retain the above copyright notice, this list of * 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer. * conditions and the following disclaimer.
* *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list * 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials * of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution. * provided with the distribution.
* *
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
@ -20,39 +20,33 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* *
* The views and conclusions contained in the software and documentation are those of the * The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed * authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com. * or implied, of BetaSteward_at_googlemail.com.
*/ */
package mage.sets.fallenempires;
package mage.filter.common; import java.util.UUID;
import mage.constants.CardType;
import mage.filter.FilterPermanent;
import mage.filter.predicate.mageobject.CardTypePredicate;
/** /**
* *
* @author nantuko * @author LoneFox
*/ */
public class FilterEnchantment extends FilterPermanent { public class BrassclawOrcs2 extends mage.sets.fallenempires.BrassclawOrcs1 {
public FilterEnchantment() { public BrassclawOrcs2(UUID ownerId) {
this("enchantment"); super(ownerId);
this.cardNumber = 101;
} }
public FilterEnchantment(String name) { public BrassclawOrcs2(final BrassclawOrcs2 card) {
super(name); super(card);
this.add(new CardTypePredicate(CardType.ENCHANTMENT));
}
public FilterEnchantment(final FilterEnchantment filter) {
super(filter);
} }
@Override @Override
public FilterEnchantment copy() { public BrassclawOrcs2 copy() {
return new FilterEnchantment(this); return new BrassclawOrcs2(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.fallenempires;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public class BrassclawOrcs3 extends mage.sets.fallenempires.BrassclawOrcs1 {
public BrassclawOrcs3(UUID ownerId) {
super(ownerId);
this.cardNumber = 102;
}
public BrassclawOrcs3(final BrassclawOrcs3 card) {
super(card);
}
@Override
public BrassclawOrcs3 copy() {
return new BrassclawOrcs3(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.fallenempires;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public class BrassclawOrcs4 extends mage.sets.fallenempires.BrassclawOrcs1 {
public BrassclawOrcs4(UUID ownerId) {
super(ownerId);
this.cardNumber = 103;
}
public BrassclawOrcs4(final BrassclawOrcs4 card) {
super(card);
}
@Override
public BrassclawOrcs4 copy() {
return new BrassclawOrcs4(this);
}
}

View file

@ -45,9 +45,9 @@ import mage.target.common.TargetCreaturePermanent;
* *
* @author LevelX2 * @author LevelX2
*/ */
public class GoblinChirurgeon extends CardImpl { public class GoblinChirurgeon1 extends CardImpl {
public GoblinChirurgeon(UUID ownerId) { public GoblinChirurgeon1(UUID ownerId) {
super(ownerId, 110, "Goblin Chirurgeon", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{R}"); super(ownerId, 110, "Goblin Chirurgeon", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{R}");
this.expansionSetCode = "FEM"; this.expansionSetCode = "FEM";
this.subtype.add("Goblin"); this.subtype.add("Goblin");
@ -56,19 +56,19 @@ public class GoblinChirurgeon extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Sacrifice a Goblin: Regenerate target creature. // Sacrifice a Goblin: Regenerate target creature.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new RegenerateTargetEffect(), new RegenerateTargetEffect(),
new SacrificeTargetCost(new TargetControlledCreaturePermanent(new FilterControlledCreaturePermanent("Goblin","a Goblin")))); new SacrificeTargetCost(new TargetControlledCreaturePermanent(new FilterControlledCreaturePermanent("Goblin","a Goblin"))));
ability.addTarget(new TargetCreaturePermanent()); ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability); this.addAbility(ability);
} }
public GoblinChirurgeon(final GoblinChirurgeon card) { public GoblinChirurgeon1(final GoblinChirurgeon1 card) {
super(card); super(card);
} }
@Override @Override
public GoblinChirurgeon copy() { public GoblinChirurgeon1 copy() {
return new GoblinChirurgeon(this); return new GoblinChirurgeon1(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.fallenempires;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public class GoblinChirurgeon2 extends mage.sets.fallenempires.GoblinChirurgeon1 {
public GoblinChirurgeon2(UUID ownerId) {
super(ownerId);
this.cardNumber = 111;
}
public GoblinChirurgeon2(final GoblinChirurgeon2 card) {
super(card);
}
@Override
public GoblinChirurgeon2 copy() {
return new GoblinChirurgeon2(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.fallenempires;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public class GoblinChirurgeon3 extends mage.sets.fallenempires.GoblinChirurgeon1 {
public GoblinChirurgeon3(UUID ownerId) {
super(ownerId);
this.cardNumber = 112;
}
public GoblinChirurgeon3(final GoblinChirurgeon3 card) {
super(card);
}
@Override
public GoblinChirurgeon3 copy() {
return new GoblinChirurgeon3(this);
}
}

View file

@ -50,9 +50,9 @@ import mage.target.targetpointer.FixedTarget;
* *
* @author Plopman * @author Plopman
*/ */
public class HighTide extends CardImpl { public class HighTide1 extends CardImpl {
public HighTide(UUID ownerId) { public HighTide1(UUID ownerId) {
super(ownerId, 35, "High Tide", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{U}"); super(ownerId, 35, "High Tide", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{U}");
this.expansionSetCode = "FEM"; this.expansionSetCode = "FEM";
@ -61,13 +61,13 @@ public class HighTide extends CardImpl {
} }
public HighTide(final HighTide card) { public HighTide1(final HighTide1 card) {
super(card); super(card);
} }
@Override @Override
public HighTide copy() { public HighTide1 copy() {
return new HighTide(this); return new HighTide1(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.fallenempires;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public class HighTide2 extends mage.sets.fallenempires.HighTide1 {
public HighTide2(UUID ownerId) {
super(ownerId);
this.cardNumber = 36;
}
public HighTide2(final HighTide2 card) {
super(card);
}
@Override
public HighTide2 copy() {
return new HighTide2(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.fallenempires;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public class HighTide3 extends mage.sets.fallenempires.HighTide1 {
public HighTide3(UUID ownerId) {
super(ownerId);
this.cardNumber = 37;
}
public HighTide3(final HighTide3 card) {
super(card);
}
@Override
public HighTide3 copy() {
return new HighTide3(this);
}
}

View file

@ -42,9 +42,9 @@ import mage.constants.Zone;
* *
* @author anonymous * @author anonymous
*/ */
public class OrcishSpy extends CardImpl { public class OrcishSpy1 extends CardImpl {
public OrcishSpy(UUID ownerId) { public OrcishSpy1(UUID ownerId) {
super(ownerId, 124, "Orcish Spy", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{R}"); super(ownerId, 124, "Orcish Spy", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{R}");
this.expansionSetCode = "FEM"; this.expansionSetCode = "FEM";
this.subtype.add("Orc"); this.subtype.add("Orc");
@ -57,12 +57,12 @@ public class OrcishSpy extends CardImpl {
this.addAbility(ability); this.addAbility(ability);
} }
public OrcishSpy(final OrcishSpy card) { public OrcishSpy1(final OrcishSpy1 card) {
super(card); super(card);
} }
@Override @Override
public OrcishSpy copy() { public OrcishSpy1 copy() {
return new OrcishSpy(this); return new OrcishSpy1(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.fallenempires;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public class OrcishSpy2 extends mage.sets.fallenempires.OrcishSpy1 {
public OrcishSpy2(UUID ownerId) {
super(ownerId);
this.cardNumber = 125;
}
public OrcishSpy2(final OrcishSpy2 card) {
super(card);
}
@Override
public OrcishSpy2 copy() {
return new OrcishSpy2(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.fallenempires;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public class OrcishSpy3 extends mage.sets.fallenempires.OrcishSpy1 {
public OrcishSpy3(UUID ownerId) {
super(ownerId);
this.cardNumber = 126;
}
public OrcishSpy3(final OrcishSpy3 card) {
super(card);
}
@Override
public OrcishSpy3 copy() {
return new OrcishSpy3(this);
}
}

View file

@ -34,21 +34,21 @@ import mage.constants.Rarity;
* *
* @author North * @author North
*/ */
public class Thallid extends mage.sets.timeshifted.Thallid { public class Thallid1 extends mage.sets.timeshifted.Thallid {
public Thallid(UUID ownerId) { public Thallid1(UUID ownerId) {
super(ownerId); super(ownerId);
this.cardNumber = 87; this.cardNumber = 87;
this.expansionSetCode = "FEM"; this.expansionSetCode = "FEM";
this.rarity = Rarity.COMMON; this.rarity = Rarity.COMMON;
} }
public Thallid(final Thallid card) { public Thallid1(final Thallid1 card) {
super(card); super(card);
} }
@Override @Override
public Thallid copy() { public Thallid1 copy() {
return new Thallid(this); return new Thallid1(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.fallenempires;
import java.util.UUID;
import mage.constants.Rarity;
/**
*
* @author North
*/
public class Thallid2 extends mage.sets.timeshifted.Thallid {
public Thallid2(UUID ownerId) {
super(ownerId);
this.cardNumber = 88;
this.expansionSetCode = "FEM";
this.rarity = Rarity.COMMON;
}
public Thallid2(final Thallid2 card) {
super(card);
}
@Override
public Thallid2 copy() {
return new Thallid2(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.fallenempires;
import java.util.UUID;
import mage.constants.Rarity;
/**
*
* @author North
*/
public class Thallid3 extends mage.sets.timeshifted.Thallid {
public Thallid3(UUID ownerId) {
super(ownerId);
this.cardNumber = 89;
this.expansionSetCode = "FEM";
this.rarity = Rarity.COMMON;
}
public Thallid3(final Thallid3 card) {
super(card);
}
@Override
public Thallid3 copy() {
return new Thallid3(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.fallenempires;
import java.util.UUID;
import mage.constants.Rarity;
/**
*
* @author North
*/
public class Thallid4 extends mage.sets.timeshifted.Thallid {
public Thallid4(UUID ownerId) {
super(ownerId);
this.cardNumber = 90;
this.expansionSetCode = "FEM";
this.rarity = Rarity.COMMON;
}
public Thallid4(final Thallid4 card) {
super(card);
}
@Override
public Thallid4 copy() {
return new Thallid4(this);
}
}

View file

@ -47,9 +47,9 @@ import mage.target.common.TargetCreatureOrPlayer;
* *
* @author fireshoes * @author fireshoes
*/ */
public class ThornThallid extends CardImpl { public class ThornThallid1 extends CardImpl {
public ThornThallid(UUID ownerId) { public ThornThallid1(UUID ownerId) {
super(ownerId, 96, "Thorn Thallid", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{G}{G}"); super(ownerId, 96, "Thorn Thallid", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
this.expansionSetCode = "FEM"; this.expansionSetCode = "FEM";
this.subtype.add("Fungus"); this.subtype.add("Fungus");
@ -59,19 +59,19 @@ public class ThornThallid extends CardImpl {
// At the beginning of your upkeep, put a spore counter on Thorn Thallid. // At the beginning of your upkeep, put a spore counter on Thorn Thallid.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.SPORE.createInstance()), TargetController.YOU, false)); this.addAbility(new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.SPORE.createInstance()), TargetController.YOU, false));
// Remove three spore counters from Thorn Thallid: Thorn Thallid deals 1 damage to target creature or player. // Remove three spore counters from Thorn Thallid: Thorn Thallid deals 1 damage to target creature or player.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
new DamageTargetEffect(1), new DamageTargetEffect(1),
new RemoveCountersSourceCost(CounterType.SPORE.createInstance(3))); new RemoveCountersSourceCost(CounterType.SPORE.createInstance(3)));
ability.addTarget(new TargetCreatureOrPlayer()); ability.addTarget(new TargetCreatureOrPlayer());
this.addAbility(ability); this.addAbility(ability);
} }
public ThornThallid(final ThornThallid card) { public ThornThallid1(final ThornThallid1 card) {
super(card); super(card);
} }
@Override @Override
public ThornThallid copy() { public ThornThallid1 copy() {
return new ThornThallid(this); return new ThornThallid1(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.fallenempires;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public class ThornThallid2 extends mage.sets.fallenempires.ThornThallid1 {
public ThornThallid2(UUID ownerId) {
super(ownerId);
this.cardNumber = 97;
}
public ThornThallid2(final ThornThallid2 card) {
super(card);
}
@Override
public ThornThallid2 copy() {
return new ThornThallid2(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.fallenempires;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public class ThornThallid3 extends mage.sets.fallenempires.ThornThallid1 {
public ThornThallid3(UUID ownerId) {
super(ownerId);
this.cardNumber = 98;
}
public ThornThallid3(final ThornThallid3 card) {
super(card);
}
@Override
public ThornThallid3 copy() {
return new ThornThallid3(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.fallenempires;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public class ThornThallid4 extends mage.sets.fallenempires.ThornThallid1 {
public ThornThallid4(UUID ownerId) {
super(ownerId);
this.cardNumber = 99;
}
public ThornThallid4(final ThornThallid4 card) {
super(card);
}
@Override
public ThornThallid4 copy() {
return new ThornThallid4(this);
}
}

View file

@ -33,20 +33,20 @@ import java.util.UUID;
* *
* @author North * @author North
*/ */
public class VodalianSoldiers extends mage.sets.fifthedition.VodalianSoldiers { public class VodalianSoldiers1 extends mage.sets.fifthedition.VodalianSoldiers {
public VodalianSoldiers(UUID ownerId) { public VodalianSoldiers1(UUID ownerId) {
super(ownerId); super(ownerId);
this.cardNumber = 62; this.cardNumber = 62;
this.expansionSetCode = "FEM"; this.expansionSetCode = "FEM";
} }
public VodalianSoldiers(final VodalianSoldiers card) { public VodalianSoldiers1(final VodalianSoldiers1 card) {
super(card); super(card);
} }
@Override @Override
public VodalianSoldiers copy() { public VodalianSoldiers1 copy() {
return new VodalianSoldiers(this); return new VodalianSoldiers1(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.fallenempires;
import java.util.UUID;
/**
*
* @author North
*/
public class VodalianSoldiers2 extends mage.sets.fifthedition.VodalianSoldiers {
public VodalianSoldiers2(UUID ownerId) {
super(ownerId);
this.cardNumber = 63;
this.expansionSetCode = "FEM";
}
public VodalianSoldiers2(final VodalianSoldiers2 card) {
super(card);
}
@Override
public VodalianSoldiers2 copy() {
return new VodalianSoldiers2(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.fallenempires;
import java.util.UUID;
/**
*
* @author North
*/
public class VodalianSoldiers3 extends mage.sets.fifthedition.VodalianSoldiers {
public VodalianSoldiers3(UUID ownerId) {
super(ownerId);
this.cardNumber = 64;
this.expansionSetCode = "FEM";
}
public VodalianSoldiers3(final VodalianSoldiers3 card) {
super(card);
}
@Override
public VodalianSoldiers3 copy() {
return new VodalianSoldiers3(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.fallenempires;
import java.util.UUID;
/**
*
* @author North
*/
public class VodalianSoldiers4 extends mage.sets.fifthedition.VodalianSoldiers {
public VodalianSoldiers4(UUID ownerId) {
super(ownerId);
this.cardNumber = 65;
this.expansionSetCode = "FEM";
}
public VodalianSoldiers4(final VodalianSoldiers4 card) {
super(card);
}
@Override
public VodalianSoldiers4 copy() {
return new VodalianSoldiers4(this);
}
}

View file

@ -33,7 +33,7 @@ import java.util.UUID;
* *
* @author dustinconrad * @author dustinconrad
*/ */
public class BrassclawOrcs extends mage.sets.fallenempires.BrassclawOrcs { public class BrassclawOrcs extends mage.sets.fallenempires.BrassclawOrcs1 {
public BrassclawOrcs(UUID ownerId) { public BrassclawOrcs(UUID ownerId) {
super(ownerId); super(ownerId);

View file

@ -34,7 +34,7 @@ import java.util.UUID;
* @author jeffwadsworth * @author jeffwadsworth
*/ */
public class Torture extends mage.sets.homelands.Torture { public class Torture extends mage.sets.homelands.Torture1 {
public Torture(UUID ownerId) { public Torture(UUID ownerId) {
super(ownerId); super(ownerId);

View file

@ -44,10 +44,10 @@ import mage.constants.Zone;
* *
* @author Sir-Speshkitty * @author Sir-Speshkitty
*/ */
public class AbbeyMatron extends CardImpl { public class AbbeyMatron1 extends CardImpl {
public AbbeyMatron(UUID ownerId) { public AbbeyMatron1(UUID ownerId) {
super(ownerId, 103, "Abbey Matron", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}"); super(ownerId, 102, "Abbey Matron", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}");
this.expansionSetCode = "HML"; this.expansionSetCode = "HML";
this.subtype.add("Human"); this.subtype.add("Human");
this.subtype.add("Cleric"); this.subtype.add("Cleric");
@ -60,12 +60,12 @@ public class AbbeyMatron extends CardImpl {
this.addAbility(ability); this.addAbility(ability);
} }
public AbbeyMatron(final AbbeyMatron card) { public AbbeyMatron1(final AbbeyMatron1 card) {
super(card); super(card);
} }
@Override @Override
public AbbeyMatron copy() { public AbbeyMatron1 copy() {
return new AbbeyMatron(this); return new AbbeyMatron1(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.homelands;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public class AbbeyMatron2 extends mage.sets.homelands.AbbeyMatron1 {
public AbbeyMatron2(UUID ownerId) {
super(ownerId);
this.cardNumber = 103;
this.expansionSetCode = "HML";
}
public AbbeyMatron2(final AbbeyMatron2 card) {
super(card);
}
@Override
public AbbeyMatron2 copy() {
return new AbbeyMatron2(this);
}
}

View file

@ -42,16 +42,16 @@ import mage.filter.predicate.mageobject.ColorPredicate;
* *
* @author fireshoes * @author fireshoes
*/ */
public class CemeteryGate extends CardImpl { public class CemeteryGate1 extends CardImpl {
private static final FilterCard filter = new FilterCard("Black"); private static final FilterCard filter = new FilterCard("Black");
static { static {
filter.add(new ColorPredicate(ObjectColor.BLACK)); filter.add(new ColorPredicate(ObjectColor.BLACK));
} }
public CemeteryGate(UUID ownerId) { public CemeteryGate1(UUID ownerId) {
super(ownerId, 5, "Cemetery Gate", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{B}"); super(ownerId, 4, "Cemetery Gate", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{B}");
this.expansionSetCode = "HML"; this.expansionSetCode = "HML";
this.subtype.add("Wall"); this.subtype.add("Wall");
this.power = new MageInt(0); this.power = new MageInt(0);
@ -59,17 +59,17 @@ public class CemeteryGate extends CardImpl {
// Defender // Defender
this.addAbility(DefenderAbility.getInstance()); this.addAbility(DefenderAbility.getInstance());
// Protection from black // Protection from black
this.addAbility(new ProtectionAbility(filter)); this.addAbility(new ProtectionAbility(filter));
} }
public CemeteryGate(final CemeteryGate card) { public CemeteryGate1(final CemeteryGate1 card) {
super(card); super(card);
} }
@Override @Override
public CemeteryGate copy() { public CemeteryGate1 copy() {
return new CemeteryGate(this); return new CemeteryGate1(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.homelands;
import java.util.UUID;
/**
*
* @author LoneFox
*/
public class CemeteryGate2 extends mage.sets.homelands.CemeteryGate1 {
public CemeteryGate2(UUID ownerId) {
super(ownerId);
this.cardNumber = 5;
this.expansionSetCode = "HML";
}
public CemeteryGate2(final CemeteryGate2 card) {
super(card);
}
@Override
public CemeteryGate2 copy() {
return new CemeteryGate2(this);
}
}

View file

@ -48,11 +48,11 @@ import mage.target.common.TargetCreaturePermanent;
* @author jeffwadsworth * @author jeffwadsworth
*/ */
public class Torture extends CardImpl { public class Torture1 extends CardImpl {
private static final String rule = "Testing rules"; private static final String rule = "Testing rules";
public Torture(UUID ownerId) { public Torture1(UUID ownerId) {
super(ownerId, 23, "Torture", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{B}"); super(ownerId, 23, "Torture", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{B}");
this.expansionSetCode = "HML"; this.expansionSetCode = "HML";
this.subtype.add("Aura"); this.subtype.add("Aura");
@ -64,7 +64,7 @@ public class Torture extends CardImpl {
this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility)); this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility));
Ability ability = new EnchantAbility(auraTarget.getTargetName()); Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability); this.addAbility(ability);
// {1}{B}: Put a -1/-1 counter on enchanted creature. // {1}{B}: Put a -1/-1 counter on enchanted creature.
//this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersAttachedEffect(CounterType.M1M1.createInstance(), rule), new ManaCostsImpl("[1}{B}"))); //this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersAttachedEffect(CounterType.M1M1.createInstance(), rule), new ManaCostsImpl("[1}{B}")));
this.addAbility(new SimpleActivatedAbility( this.addAbility(new SimpleActivatedAbility(
@ -73,12 +73,12 @@ public class Torture extends CardImpl {
new ManaCostsImpl("{1}{B}"))); new ManaCostsImpl("{1}{B}")));
} }
public Torture(final Torture card) { public Torture1(final Torture1 card) {
super(card); super(card);
} }
@Override @Override
public Torture copy() { public Torture1 copy() {
return new Torture(this); return new Torture1(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.homelands;
import java.util.UUID;
/**
*
* @author fireshoes
*/
public class Torture2 extends mage.sets.homelands.Torture1 {
public Torture2(UUID ownerId) {
super(ownerId);
this.cardNumber = 24;
this.expansionSetCode = "HML";
}
public Torture2(final Torture2 card) {
super(card);
}
@Override
public Torture2 copy() {
return new Torture2(this);
}
}

View file

@ -33,7 +33,7 @@ import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.filter.common.FilterEnchantment; import mage.filter.common.FilterEnchantmentPermanent;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
@ -78,7 +78,7 @@ class ParaseleneEffect extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
int count = 0; int count = 0;
for (Permanent permanent : game.getBattlefield().getActivePermanents(new FilterEnchantment(), source.getControllerId(), source.getSourceId(), game)) { for (Permanent permanent : game.getBattlefield().getActivePermanents(new FilterEnchantmentPermanent(), source.getControllerId(), source.getSourceId(), game)) {
if (permanent.destroy(source.getSourceId(), game, false)) { if (permanent.destroy(source.getSourceId(), game, false)) {
count++; count++;
} }

View file

@ -36,6 +36,7 @@ import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.Rarity; import mage.constants.Rarity;
import mage.constants.SetTargetPointer;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.CardTypePredicate;
@ -48,7 +49,7 @@ import mage.players.Player;
* @author emerald000 * @author emerald000
*/ */
public class InTheEyeOfChaos extends CardImpl { public class InTheEyeOfChaos extends CardImpl {
private static final FilterSpell filter = new FilterSpell("an instant spell"); private static final FilterSpell filter = new FilterSpell("an instant spell");
static { static {
filter.add(new CardTypePredicate(CardType.INSTANT)); filter.add(new CardTypePredicate(CardType.INSTANT));
@ -61,7 +62,7 @@ public class InTheEyeOfChaos extends CardImpl {
// Whenever a player casts an instant spell, counter it unless that player pays {X}, where X is its converted mana cost. // Whenever a player casts an instant spell, counter it unless that player pays {X}, where X is its converted mana cost.
this.addAbility(new SpellCastAllTriggeredAbility(Zone.BATTLEFIELD, new InTheEyeOfChaosEffect(), filter, false, true)); this.addAbility(new SpellCastAllTriggeredAbility(Zone.BATTLEFIELD, new InTheEyeOfChaosEffect(), filter, false, SetTargetPointer.SPELL));
} }
public InTheEyeOfChaos(final InTheEyeOfChaos card) { public InTheEyeOfChaos(final InTheEyeOfChaos card) {
@ -75,21 +76,21 @@ public class InTheEyeOfChaos extends CardImpl {
} }
class InTheEyeOfChaosEffect extends OneShotEffect { class InTheEyeOfChaosEffect extends OneShotEffect {
InTheEyeOfChaosEffect() { InTheEyeOfChaosEffect() {
super(Outcome.Detriment); super(Outcome.Detriment);
this.staticText = "counter it unless that player pays {X}, where X is its converted mana cost"; this.staticText = "counter it unless that player pays {X}, where X is its converted mana cost";
} }
InTheEyeOfChaosEffect(final InTheEyeOfChaosEffect effect) { InTheEyeOfChaosEffect(final InTheEyeOfChaosEffect effect) {
super(effect); super(effect);
} }
@Override @Override
public InTheEyeOfChaosEffect copy() { public InTheEyeOfChaosEffect copy() {
return new InTheEyeOfChaosEffect(this); return new InTheEyeOfChaosEffect(this);
} }
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
StackObject spell = game.getStack().getStackObject(targetPointer.getFirst(game, source)); StackObject spell = game.getStack().getStackObject(targetPointer.getFirst(game, source));

View file

@ -34,6 +34,7 @@ import mage.abilities.effects.common.CounterUnlessPaysEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Rarity; import mage.constants.Rarity;
import mage.constants.SetTargetPointer;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
/** /**
@ -48,7 +49,7 @@ public class NetherVoid extends CardImpl {
this.supertype.add("World"); this.supertype.add("World");
// Whenever a player casts a spell, counter it unless that player pays {3}. // Whenever a player casts a spell, counter it unless that player pays {3}.
this.addAbility(new SpellCastAllTriggeredAbility(new CounterUnlessPaysEffect(new GenericManaCost(3)), new FilterSpell("a spell"), false, true)); this.addAbility(new SpellCastAllTriggeredAbility(new CounterUnlessPaysEffect(new GenericManaCost(3)), new FilterSpell("a spell"), false, SetTargetPointer.SPELL));
} }
public NetherVoid(final NetherVoid card) { public NetherVoid(final NetherVoid card) {

View file

@ -40,7 +40,7 @@ import mage.constants.Outcome;
import mage.constants.Rarity; import mage.constants.Rarity;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.common.FilterEnchantment; import mage.filter.common.FilterEnchantmentPermanent;
import mage.filter.predicate.permanent.ControllerPredicate; import mage.filter.predicate.permanent.ControllerPredicate;
/** /**
@ -48,8 +48,8 @@ import mage.filter.predicate.permanent.ControllerPredicate;
* @author fireshoes * @author fireshoes
*/ */
public class HelmOfTheGods extends CardImpl { public class HelmOfTheGods extends CardImpl {
private static final FilterEnchantment filter = new FilterEnchantment("enchantment you control"); private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("enchantment you control");
static { static {
filter.add(new ControllerPredicate(TargetController.YOU)); filter.add(new ControllerPredicate(TargetController.YOU));
@ -61,11 +61,11 @@ public class HelmOfTheGods extends CardImpl {
this.subtype.add("Equipment"); this.subtype.add("Equipment");
// Equipped creature gets +1/+1 for each enchantment you control. // Equipped creature gets +1/+1 for each enchantment you control.
PermanentsOnBattlefieldCount countEnchantments = new PermanentsOnBattlefieldCount(new FilterEnchantment(filter)); PermanentsOnBattlefieldCount countEnchantments = new PermanentsOnBattlefieldCount(new FilterEnchantmentPermanent(filter));
Effect effect = new BoostEquippedEffect(countEnchantments, countEnchantments); Effect effect = new BoostEquippedEffect(countEnchantments, countEnchantments);
effect.setText("Equipped creature gets +1/+1 for each enchantment you control"); effect.setText("Equipped creature gets +1/+1 for each enchantment you control");
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
// Equip {1} // Equip {1}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(1))); this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(1)));
} }

View file

@ -45,7 +45,6 @@ import mage.constants.SubLayer;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.FilterCard; import mage.filter.FilterCard;
import mage.filter.common.FilterEnchantment;
import mage.filter.common.FilterEnchantmentPermanent; import mage.filter.common.FilterEnchantmentPermanent;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.CardTypePredicate; import mage.filter.predicate.mageobject.CardTypePredicate;
@ -62,11 +61,11 @@ import mage.target.common.TargetCardInGraveyard;
* @author fireshoes * @author fireshoes
*/ */
public class StarfieldOfNyx extends CardImpl { public class StarfieldOfNyx extends CardImpl {
private static final String rule1 = "As long as you control five or more enchantments, each other non-Aura enchantment you control is a creature in addition to its other types and has base power and base toughness each equal to its converted mana cost."; private static final String rule1 = "As long as you control five or more enchantments, each other non-Aura enchantment you control is a creature in addition to its other types and has base power and base toughness each equal to its converted mana cost.";
private static final FilterCard filterGraveyardEnchantment = new FilterCard("enchantment card from your graveyard"); private static final FilterCard filterGraveyardEnchantment = new FilterCard("enchantment card from your graveyard");
private static final FilterEnchantment filterEnchantmentYouControl = new FilterEnchantment("enchantment you control"); private static final FilterEnchantmentPermanent filterEnchantmentYouControl = new FilterEnchantmentPermanent("enchantment you control");
static { static {
filterEnchantmentYouControl.add(new ControllerPredicate(TargetController.YOU)); filterEnchantmentYouControl.add(new ControllerPredicate(TargetController.YOU));
@ -81,11 +80,11 @@ public class StarfieldOfNyx extends CardImpl {
this.expansionSetCode = "ORI"; this.expansionSetCode = "ORI";
// At the beginning of your upkeep, you may return target enchantment card from your graveyard to the battlefield. // At the beginning of your upkeep, you may return target enchantment card from your graveyard to the battlefield.
Ability ability = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, Ability ability = new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD,
new ReturnFromGraveyardToBattlefieldTargetEffect(), TargetController.YOU, true); new ReturnFromGraveyardToBattlefieldTargetEffect(), TargetController.YOU, true);
ability.addTarget(new TargetCardInGraveyard(filterGraveyardEnchantment)); ability.addTarget(new TargetCardInGraveyard(filterGraveyardEnchantment));
this.addAbility(ability); this.addAbility(ability);
// As long as you control five or more enchantments, each other non-Aura enchantment you control is a creature in addition to its other types and has base power and base toughness each equal to its converted mana cost. // As long as you control five or more enchantments, each other non-Aura enchantment you control is a creature in addition to its other types and has base power and base toughness each equal to its converted mana cost.
ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new StarfieldOfNyxEffect(), new PermanentsOnTheBattlefieldCondition(filterEnchantmentYouControl, PermanentsOnTheBattlefieldCondition.CountType.MORE_THAN, 4), rule1); ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new StarfieldOfNyxEffect(), new PermanentsOnTheBattlefieldCondition(filterEnchantmentYouControl, PermanentsOnTheBattlefieldCondition.CountType.MORE_THAN, 4), rule1);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
@ -109,7 +108,7 @@ class StarfieldOfNyxEffect extends ContinuousEffectImpl {
filter.add(new AnotherPredicate()); filter.add(new AnotherPredicate());
filter.add(new OwnerPredicate(TargetController.YOU)); filter.add(new OwnerPredicate(TargetController.YOU));
} }
public StarfieldOfNyxEffect() { public StarfieldOfNyxEffect() {
super(Duration.WhileOnBattlefield, Outcome.BecomeCreature); super(Duration.WhileOnBattlefield, Outcome.BecomeCreature);
staticText = "Each other non-Aura enchantment is a creature in addition to its other types and has base power and toughness each equal to its converted mana cost"; staticText = "Each other non-Aura enchantment is a creature in addition to its other types and has base power and toughness each equal to its converted mana cost";
@ -159,4 +158,4 @@ class StarfieldOfNyxEffect extends ContinuousEffectImpl {
return layer == Layer.PTChangingEffects_7 || layer == Layer.TypeChangingEffects_4; return layer == Layer.PTChangingEffects_7 || layer == Layer.TypeChangingEffects_4;
} }
} }

View file

@ -33,7 +33,7 @@ import java.util.UUID;
* *
* @author LevelX2 * @author LevelX2
*/ */
public class GoblinChirurgeon extends mage.sets.fallenempires.GoblinChirurgeon { public class GoblinChirurgeon extends mage.sets.fallenempires.GoblinChirurgeon1 {
public GoblinChirurgeon(UUID ownerId) { public GoblinChirurgeon(UUID ownerId) {
super(ownerId); super(ownerId);

View file

@ -34,7 +34,7 @@ import mage.constants.Rarity;
* *
* @author LevelX2 * @author LevelX2
*/ */
public class HighTide extends mage.sets.fallenempires.HighTide { public class HighTide extends mage.sets.fallenempires.HighTide1 {
public HighTide(UUID ownerId) { public HighTide(UUID ownerId) {
super(ownerId); super(ownerId);

View file

@ -33,7 +33,7 @@ import java.util.UUID;
* *
* @author LevelX2 * @author LevelX2
*/ */
public class ThornThallid extends mage.sets.fallenempires.ThornThallid { public class ThornThallid extends mage.sets.fallenempires.ThornThallid1 {
public ThornThallid(UUID ownerId) { public ThornThallid(UUID ownerId) {
super(ownerId); super(ownerId);

View file

@ -33,7 +33,7 @@ import java.util.UUID;
* *
* @author LevelX2 * @author LevelX2
*/ */
public class BrassclawOrcs extends mage.sets.fallenempires.BrassclawOrcs { public class BrassclawOrcs extends mage.sets.fallenempires.BrassclawOrcs1 {
public BrassclawOrcs(UUID ownerId) { public BrassclawOrcs(UUID ownerId) {
super(ownerId); super(ownerId);

View file

@ -33,7 +33,7 @@ import java.util.UUID;
* *
* @author LevelX2 * @author LevelX2
*/ */
public class AesthirGlider extends mage.sets.alliances.AesthirGlider { public class AesthirGlider extends mage.sets.alliances.AesthirGlider1 {
public AesthirGlider(UUID ownerId) { public AesthirGlider(UUID ownerId) {
super(ownerId); super(ownerId);

View file

@ -2,18 +2,18 @@ package mage.sets.mediainserts;
import java.util.UUID; import java.util.UUID;
public class HighTide extends mage.sets.fallenempires.HighTide { public class HighTide extends mage.sets.fallenempires.HighTide1 {
public HighTide(UUID ownerId) { public HighTide(UUID ownerId) {
super(ownerId); super(ownerId);
this.cardNumber = 80; this.cardNumber = 80;
this.expansionSetCode = "MBP"; this.expansionSetCode = "MBP";
} }
public HighTide(final HighTide card) { public HighTide(final HighTide card) {
super(card); super(card);
} }
@Override @Override
public HighTide copy() { public HighTide copy() {
return new HighTide(this); return new HighTide(this);

View file

@ -44,9 +44,9 @@ import mage.constants.Rarity;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
import mage.game.Game; import mage.game.Game;
import mage.game.stack.Spell;
import mage.players.Player; import mage.players.Player;
import mage.target.targetpointer.FixedTarget; import mage.target.targetpointer.FixedTarget;
import mage.constants.SetTargetPointer;
/** /**
* *
@ -59,7 +59,7 @@ public class HornOfPlenty extends CardImpl {
this.expansionSetCode = "MMQ"; this.expansionSetCode = "MMQ";
// Whenever a player casts a spell, he or she may pay {1}. If that player does, he or she draws a card at the beginning of the next end step. // Whenever a player casts a spell, he or she may pay {1}. If that player does, he or she draws a card at the beginning of the next end step.
this.addAbility(new SpellCastAllTriggeredAbility(new HornOfPlentyEffect(), new FilterSpell("a spell"), false, true)); this.addAbility(new SpellCastAllTriggeredAbility(new HornOfPlentyEffect(), new FilterSpell("a spell"), false, SetTargetPointer.PLAYER));
} }
public HornOfPlenty(final HornOfPlenty card) { public HornOfPlenty(final HornOfPlenty card) {
@ -90,11 +90,7 @@ class HornOfPlentyEffect extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Spell spell = game.getStack().getSpell(targetPointer.getFirst(game, source)); Player caster = game.getPlayer(targetPointer.getFirst(game, source));
Player caster = null;
if (spell != null) {
caster = game.getPlayer(spell.getControllerId());
}
if (caster != null) { if (caster != null) {
if (caster.chooseUse(Outcome.DrawCard, "Pay {1} to draw a card at the beginning of the next end step?", source, game)) { if (caster.chooseUse(Outcome.DrawCard, "Pay {1} to draw a card at the beginning of the next end step?", source, game)) {
Cost cost = new ManaCostsImpl("{1}"); Cost cost = new ManaCostsImpl("{1}");

View file

@ -32,27 +32,26 @@ import mage.abilities.Ability;
import mage.abilities.common.SpellCastAllTriggeredAbility; import mage.abilities.common.SpellCastAllTriggeredAbility;
import mage.abilities.costs.Cost; import mage.abilities.costs.Cost;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DrawCardTargetEffect;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.DrawCardTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.Rarity; import mage.constants.Rarity;
import mage.constants.SetTargetPointer;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
import mage.game.Game; import mage.game.Game;
import mage.game.stack.Spell;
import mage.players.Player; import mage.players.Player;
import mage.target.targetpointer.FixedTarget;
/** /**
* *
* @author cbt33, Level_X2 (Horn of Plenty) * @author cbt33, Level_X2 (Horn of Plenty)
*/ */
public class UnifyingTheory extends CardImpl { public class UnifyingTheory extends CardImpl {
public UnifyingTheory(UUID ownerId) { public UnifyingTheory(UUID ownerId) {
@ -61,7 +60,7 @@ public class UnifyingTheory extends CardImpl {
// Whenever a player casts a spell, that player may pay {2}. If the player does, he or she draws a card. // Whenever a player casts a spell, that player may pay {2}. If the player does, he or she draws a card.
this.addAbility(new SpellCastAllTriggeredAbility(new UnifyingTheoryEffect() , new FilterSpell("a spell"), false, true)); this.addAbility(new SpellCastAllTriggeredAbility(new UnifyingTheoryEffect() , new FilterSpell("a spell"), false, SetTargetPointer.PLAYER));
} }
public UnifyingTheory(final UnifyingTheory card) { public UnifyingTheory(final UnifyingTheory card) {
@ -92,11 +91,7 @@ class UnifyingTheoryEffect extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Spell spell = game.getStack().getSpell(targetPointer.getFirst(game, source)); Player caster = game.getPlayer(targetPointer.getFirst(game, source));
Player caster = null;
if (spell != null) {
caster = game.getPlayer(spell.getControllerId());
}
if (caster != null) { if (caster != null) {
if (caster.chooseUse(Outcome.DrawCard, "Pay {2} to draw a card?", source, game)) { if (caster.chooseUse(Outcome.DrawCard, "Pay {2} to draw a card?", source, game)) {
Cost cost = new ManaCostsImpl("{2}"); Cost cost = new ManaCostsImpl("{2}");

View file

@ -46,7 +46,7 @@ import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.FirstStrikeAbility; import mage.abilities.keyword.FirstStrikeAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.filter.common.FilterEnchantment; import mage.filter.common.FilterEnchantmentPermanent;
import mage.filter.predicate.permanent.ControllerPredicate; import mage.filter.predicate.permanent.ControllerPredicate;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
@ -57,7 +57,7 @@ import mage.target.common.TargetCreaturePermanent;
*/ */
public class EtherealArmor extends CardImpl { public class EtherealArmor extends CardImpl {
private static final FilterEnchantment filter = new FilterEnchantment("enchantment you control"); private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("enchantment you control");
static { static {
filter.add(new ControllerPredicate(TargetController.YOU)); filter.add(new ControllerPredicate(TargetController.YOU));
@ -77,7 +77,7 @@ public class EtherealArmor extends CardImpl {
this.addAbility(ability); this.addAbility(ability);
// Enchanted creature gets +1/+1 for each enchantment you control and has first strike. // Enchanted creature gets +1/+1 for each enchantment you control and has first strike.
PermanentsOnBattlefieldCount countEnchantments = new PermanentsOnBattlefieldCount(new FilterEnchantment(filter)); PermanentsOnBattlefieldCount countEnchantments = new PermanentsOnBattlefieldCount(new FilterEnchantmentPermanent(filter));
SimpleStaticAbility ability2 = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(countEnchantments, countEnchantments, Duration.WhileOnBattlefield)); SimpleStaticAbility ability2 = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(countEnchantments, countEnchantments, Duration.WhileOnBattlefield));
ability2.addEffect(new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.AURA)); ability2.addEffect(new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.AURA));
this.addAbility(ability2); this.addAbility(ability2);

View file

@ -38,7 +38,7 @@ import mage.abilities.effects.common.continuous.BoostAllEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.filter.common.FilterEnchantment; import mage.filter.common.FilterEnchantmentPermanent;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
/** /**
@ -58,7 +58,7 @@ public class GolgariCharm extends CardImpl {
// or destroy target enchantment; // or destroy target enchantment;
Mode mode = new Mode(); Mode mode = new Mode();
mode.getEffects().add(new DestroyTargetEffect()); mode.getEffects().add(new DestroyTargetEffect());
mode.getTargets().add(new TargetPermanent(new FilterEnchantment())); mode.getTargets().add(new TargetPermanent(new FilterEnchantmentPermanent()));
this.getSpellAbility().addMode(mode); this.getSpellAbility().addMode(mode);
// or regenerate each creature you control. // or regenerate each creature you control.
@ -75,4 +75,4 @@ public class GolgariCharm extends CardImpl {
public GolgariCharm copy() { public GolgariCharm copy() {
return new GolgariCharm(this); return new GolgariCharm(this);
} }
} }

View file

@ -37,7 +37,7 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.ReplacementEffectImpl;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.filter.common.FilterEnchantment; import mage.filter.common.FilterEnchantmentPermanent;
import mage.filter.predicate.permanent.ControllerPredicate; import mage.filter.predicate.permanent.ControllerPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
@ -73,13 +73,13 @@ public class SphereOfSafety extends CardImpl {
class SphereOfSafetyReplacementEffect extends ReplacementEffectImpl { class SphereOfSafetyReplacementEffect extends ReplacementEffectImpl {
private static final String effectText = "Creatures can't attack you or a planeswalker you control unless their controller pays {X} for each of those creatures, where X is the number of enchantments you control"; private static final String effectText = "Creatures can't attack you or a planeswalker you control unless their controller pays {X} for each of those creatures, where X is the number of enchantments you control";
private static final FilterEnchantment filter = new FilterEnchantment("enchantment you control"); private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("enchantment you control");
static { static {
filter.add(new ControllerPredicate(TargetController.YOU)); filter.add(new ControllerPredicate(TargetController.YOU));
} }
private final PermanentsOnBattlefieldCount countEnchantments = new PermanentsOnBattlefieldCount(filter); private final PermanentsOnBattlefieldCount countEnchantments = new PermanentsOnBattlefieldCount(filter);
SphereOfSafetyReplacementEffect ( ) { SphereOfSafetyReplacementEffect ( ) {
super(Duration.WhileOnBattlefield, Outcome.Benefit); super(Duration.WhileOnBattlefield, Outcome.Benefit);
staticText = effectText; staticText = effectText;
@ -88,7 +88,7 @@ class SphereOfSafetyReplacementEffect extends ReplacementEffectImpl {
SphereOfSafetyReplacementEffect ( SphereOfSafetyReplacementEffect effect ) { SphereOfSafetyReplacementEffect ( SphereOfSafetyReplacementEffect effect ) {
super(effect); super(effect);
} }
@Override @Override
public boolean checksEventType(GameEvent event, Game game) { public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.DECLARE_ATTACKER; return event.getType() == GameEvent.EventType.DECLARE_ATTACKER;
@ -124,7 +124,7 @@ class SphereOfSafetyReplacementEffect extends ReplacementEffectImpl {
} }
return false; return false;
} }
@Override @Override
public SphereOfSafetyReplacementEffect copy() { public SphereOfSafetyReplacementEffect copy() {
return new SphereOfSafetyReplacementEffect(this); return new SphereOfSafetyReplacementEffect(this);

View file

@ -36,7 +36,7 @@ import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.filter.common.FilterEnchantment; import mage.filter.common.FilterEnchantmentPermanent;
import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.filter.predicate.permanent.ControllerPredicate; import mage.filter.predicate.permanent.ControllerPredicate;
import mage.game.Game; import mage.game.Game;
@ -52,7 +52,7 @@ import mage.target.common.TargetCreaturePermanent;
*/ */
public class AuraFinesse extends CardImpl { public class AuraFinesse extends CardImpl {
private static final FilterEnchantment filter = new FilterEnchantment("Aura you control"); private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Aura you control");
static { static {
filter.add(new ControllerPredicate(TargetController.YOU)); filter.add(new ControllerPredicate(TargetController.YOU));
@ -115,7 +115,7 @@ class AuraFinesseEffect extends OneShotEffect {
creature.addAttachment(aura.getId(), game); creature.addAttachment(aura.getId(), game);
} }
} }
} }
return true; return true;
} }
return false; return false;

View file

@ -37,7 +37,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
import mage.abilities.keyword.TotemArmorAbility; import mage.abilities.keyword.TotemArmorAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.filter.common.FilterEnchantment; import mage.filter.common.FilterEnchantmentPermanent;
import mage.filter.predicate.ObjectPlayer; import mage.filter.predicate.ObjectPlayer;
import mage.filter.predicate.ObjectPlayerPredicate; import mage.filter.predicate.ObjectPlayerPredicate;
import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate;
@ -50,7 +50,7 @@ import mage.game.permanent.Permanent;
*/ */
public class UmbraMystic extends CardImpl { public class UmbraMystic extends CardImpl {
private static final FilterEnchantment filter = new FilterEnchantment("Auras attached to permanents you control"); private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Auras attached to permanents you control");
static { static {
filter.add(new SubtypePredicate("Aura")); filter.add(new SubtypePredicate("Aura"));

View file

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

View file

@ -34,7 +34,7 @@ import java.util.UUID;
* @author jeffwadsworth * @author jeffwadsworth
*/ */
public class Torture extends mage.sets.homelands.Torture { public class Torture extends mage.sets.homelands.Torture1 {
public Torture(UUID ownerId) { public Torture(UUID ownerId) {
super(ownerId); super(ownerId);

View file

@ -70,7 +70,7 @@ public class DeepSeaKraken extends CardImpl {
this.addAbility(new SuspendAbility(9, new ManaCostsImpl("{2}{U}"), this)); this.addAbility(new SuspendAbility(9, new ManaCostsImpl("{2}{U}"), this));
// Whenever an opponent casts a spell, if Deep-Sea Kraken is suspended, remove a time counter from it. // Whenever an opponent casts a spell, if Deep-Sea Kraken is suspended, remove a time counter from it.
this.addAbility(new ConditionalTriggeredAbility( this.addAbility(new ConditionalTriggeredAbility(
new SpellCastAllTriggeredAbility(Zone.EXILED, new RemoveCounterSourceEffect(CounterType.TIME.createInstance()), filter, false, false), SuspendedCondition.getInstance(), new SpellCastAllTriggeredAbility(Zone.EXILED, new RemoveCounterSourceEffect(CounterType.TIME.createInstance()), filter, false, null), SuspendedCondition.getInstance(),
"Whenever an opponent casts a spell, if Deep-Sea Kraken is suspended, remove a time counter from it.", false)); "Whenever an opponent casts a spell, if Deep-Sea Kraken is suspended, remove a time counter from it.", false));
} }

View file

@ -37,7 +37,7 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.filter.common.FilterEnchantment; import mage.filter.common.FilterEnchantmentPermanent;
import mage.filter.predicate.ObjectPlayer; import mage.filter.predicate.ObjectPlayer;
import mage.filter.predicate.ObjectPlayerPredicate; import mage.filter.predicate.ObjectPlayerPredicate;
import mage.filter.predicate.mageobject.SubtypePredicate; import mage.filter.predicate.mageobject.SubtypePredicate;
@ -50,9 +50,9 @@ import mage.target.TargetPermanent;
* @author Plopman * @author Plopman
*/ */
public class DevoutHarpist extends CardImpl { public class DevoutHarpist extends CardImpl {
private static final FilterEnchantment filter = new FilterEnchantment("Auras attached to a creature"); private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("Auras attached to a creature");
static static
{ {
filter.add(new SubtypePredicate("Aura")); filter.add(new SubtypePredicate("Aura"));
filter.add(new DevoutHarpistPredicate()); filter.add(new DevoutHarpistPredicate());
} }
@ -69,7 +69,7 @@ public class DevoutHarpist extends CardImpl {
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new TapSourceCost()); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new TapSourceCost());
ability.addTarget(new TargetPermanent(filter)); ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability); this.addAbility(ability);
} }
public DevoutHarpist(final DevoutHarpist card) { public DevoutHarpist(final DevoutHarpist card) {
@ -80,11 +80,11 @@ public class DevoutHarpist extends CardImpl {
public DevoutHarpist copy() { public DevoutHarpist copy() {
return new DevoutHarpist(this); return new DevoutHarpist(this);
} }
} }
class DevoutHarpistPredicate implements ObjectPlayerPredicate<ObjectPlayer<Permanent>> { class DevoutHarpistPredicate implements ObjectPlayerPredicate<ObjectPlayer<Permanent>> {
@Override @Override
public boolean apply(ObjectPlayer<Permanent> input, Game game) { public boolean apply(ObjectPlayer<Permanent> input, Game game) {
Permanent attachement = input.getObject(); Permanent attachement = input.getObject();
if (attachement != null) { if (attachement != null) {

View file

@ -40,7 +40,7 @@ import mage.abilities.effects.OneShotEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardsImpl; import mage.cards.CardsImpl;
import mage.filter.FilterCard; import mage.filter.FilterCard;
import mage.filter.common.FilterEnchantment; import mage.filter.common.FilterEnchantmentPermanent;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.players.Player; import mage.players.Player;
@ -89,7 +89,7 @@ class HarmonicConvergenceEffect extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
List<Permanent> enchantments = game.getBattlefield().getActivePermanents(new FilterEnchantment(), List<Permanent> enchantments = game.getBattlefield().getActivePermanents(new FilterEnchantmentPermanent(),
source.getControllerId(), source.getControllerId(),
source.getSourceId(), source.getSourceId(),
game); game);

View file

@ -32,7 +32,7 @@ import mage.constants.CardType;
import mage.constants.Rarity; import mage.constants.Rarity;
import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.filter.common.FilterEnchantment; import mage.filter.common.FilterEnchantmentPermanent;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
/** /**
@ -48,7 +48,7 @@ public class PeaceAndQuiet extends CardImpl {
// Destroy two target enchantments. // Destroy two target enchantments.
this.getSpellAbility().addEffect(new DestroyTargetEffect()); this.getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellAbility().addTarget(new TargetPermanent(2, new FilterEnchantment())); this.getSpellAbility().addTarget(new TargetPermanent(2, new FilterEnchantmentPermanent()));
} }
public PeaceAndQuiet(final PeaceAndQuiet card) { public PeaceAndQuiet(final PeaceAndQuiet card) {

View file

@ -34,7 +34,7 @@ import mage.constants.Rarity;
* *
* @author LevelX2 * @author LevelX2
*/ */
public class HighTide extends mage.sets.fallenempires.HighTide { public class HighTide extends mage.sets.fallenempires.HighTide1 {
public HighTide(UUID ownerId) { public HighTide(UUID ownerId) {
super(ownerId); super(ownerId);

View file

@ -29,6 +29,7 @@ package mage.abilities.common;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.constants.SetTargetPointer;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
import mage.game.Game; import mage.game.Game;
@ -45,39 +46,35 @@ public class SpellCastAllTriggeredAbility extends TriggeredAbilityImpl {
private static final FilterSpell spellCard = new FilterSpell("a spell"); private static final FilterSpell spellCard = new FilterSpell("a spell");
protected FilterSpell filter; protected FilterSpell filter;
protected String rule; protected String rule;
protected SetTargetPointer setTargetPointer;
/**
* If true, the source that triggered the ability will be set as target to effect.
*/
protected boolean rememberSource = false;
public SpellCastAllTriggeredAbility(Effect effect, boolean optional) { public SpellCastAllTriggeredAbility(Effect effect, boolean optional) {
this(Zone.BATTLEFIELD, effect, spellCard, optional, false); this(Zone.BATTLEFIELD, effect, spellCard, optional, SetTargetPointer.NONE);
} }
public SpellCastAllTriggeredAbility(Effect effect, FilterSpell filter, boolean optional) { public SpellCastAllTriggeredAbility(Effect effect, FilterSpell filter, boolean optional) {
this(effect, filter, optional, false); this(effect, filter, optional, SetTargetPointer.NONE);
} }
public SpellCastAllTriggeredAbility(Effect effect, FilterSpell filter, boolean optional, String rule) { public SpellCastAllTriggeredAbility(Effect effect, FilterSpell filter, boolean optional, String rule) {
this(effect, filter, optional, false); this(effect, filter, optional, SetTargetPointer.NONE);
this.rule = rule; this.rule = rule;
} }
public SpellCastAllTriggeredAbility(Effect effect, FilterSpell filter, boolean optional, boolean rememberSource) { public SpellCastAllTriggeredAbility(Effect effect, FilterSpell filter, boolean optional, SetTargetPointer setTargetPointer) {
this(Zone.BATTLEFIELD, effect, filter, optional, rememberSource); this(Zone.BATTLEFIELD, effect, filter, optional, setTargetPointer);
} }
public SpellCastAllTriggeredAbility(Zone zone, Effect effect, FilterSpell filter, boolean optional, boolean rememberSource) { public SpellCastAllTriggeredAbility(Zone zone, Effect effect, FilterSpell filter, boolean optional, SetTargetPointer setTargetPointer) {
super(zone, effect, optional); super(zone, effect, optional);
this.filter = filter; this.filter = filter;
this.rememberSource = rememberSource; this.setTargetPointer = setTargetPointer;
} }
public SpellCastAllTriggeredAbility(final SpellCastAllTriggeredAbility ability) { public SpellCastAllTriggeredAbility(final SpellCastAllTriggeredAbility ability) {
super(ability); super(ability);
filter = ability.filter; filter = ability.filter;
this.rememberSource = ability.rememberSource; this.setTargetPointer = ability.setTargetPointer;
this.rule = ability.rule; this.rule = ability.rule;
} }
@ -90,8 +87,18 @@ public class SpellCastAllTriggeredAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) { public boolean checkTrigger(GameEvent event, Game game) {
Spell spell = game.getStack().getSpell(event.getTargetId()); Spell spell = game.getStack().getSpell(event.getTargetId());
if (spell != null && filter.match(spell, getControllerId(), game)) { if (spell != null && filter.match(spell, getControllerId(), game)) {
if (rememberSource) { if (!setTargetPointer.equals(SetTargetPointer.NONE)) {
this.getEffects().get(0).setTargetPointer(new FixedTarget(spell.getId())); for (Effect effect : this.getEffects()) {
switch(setTargetPointer) {
case SPELL:
effect.setTargetPointer(new FixedTarget(spell.getId()));
break;
case PLAYER:
effect.setTargetPointer(new FixedTarget(spell.getControllerId()));
break;
}
}
} }
return true; return true;
} }