diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java
index 75a86ecfea..f5a24f64c8 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java
@@ -2429,7 +2429,9 @@ public class PreferencesDialog extends javax.swing.JDialog {
PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GAME_CONFIRM_EMPTY_MANA_POOL, "true").equals("true"),
getUserSkipPrioritySteps(),
MageFrame.getPreferences().get(KEY_CONNECT_FLAG, "world"),
- PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GAME_ASK_MOVE_TO_GRAVE_ORDER, "true").equals("true")
+ PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GAME_ASK_MOVE_TO_GRAVE_ORDER, "true").equals("true"),
+ PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GAME_MANA_AUTOPAYMENT, "true").equals("true"),
+ PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GAME_MANA_AUTOPAYMENT_ONLY_ONE, "true").equals("true")
);
}
diff --git a/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java b/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java
index c7be776f30..101df9709a 100644
--- a/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java
+++ b/Mage.Client/src/main/java/mage/client/game/PlayAreaPanel.java
@@ -243,6 +243,7 @@ public class PlayAreaPanel extends javax.swing.JPanel {
gamePanel.getSession().sendPlayerAction(manaPoolAutomatic ? PlayerAction.MANA_AUTO_PAYMENT_ON : PlayerAction.MANA_AUTO_PAYMENT_OFF, gameId, null);
}
});
+
manaPoolMenuItem2 = new JCheckBoxMenuItem("No automatic usage for mana already in the pool", true);
manaPoolMenuItem2.setMnemonic(KeyEvent.VK_N);
manaPoolMenuItem2.setToolTipText("Mana that is already in the mana pool as you start casting a spell or activating an ability
"
diff --git a/Mage.Common/src/mage/view/UserDataView.java b/Mage.Common/src/mage/view/UserDataView.java
index cc313936a9..242fa32ec2 100644
--- a/Mage.Common/src/mage/view/UserDataView.java
+++ b/Mage.Common/src/mage/view/UserDataView.java
@@ -2,7 +2,6 @@ package mage.view;
import java.io.Serializable;
import mage.players.net.UserData;
-import mage.players.net.UserGroup;
import mage.players.net.UserSkipPrioritySteps;
/**
@@ -22,7 +21,7 @@ public class UserDataView implements Serializable {
protected boolean askMoveToGraveOrder;
static UserData getDefaultUserDataView() {
- return new UserData(UserGroup.DEFAULT, 0, false, false, true, null, "world.png", false);
+ return UserData.getDefaultUserDataView();
}
public UserDataView(int avatarId, boolean showAbilityPickerForced, boolean allowRequestShowHandCards,
diff --git a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java
index 88d4697272..7b8b96edae 100644
--- a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java
+++ b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java
@@ -175,7 +175,10 @@ public class ComputerPlayer extends PlayerImpl implements Player {
super(name, range);
flagName = "computer";
human = false;
- userData = new UserData(UserGroup.COMPUTER, 64, false, true, false, null, "Computer.png", false);
+ userData = UserData.getDefaultUserDataView();
+ userData.setAvatarId(64);
+ userData.setGroupId(UserGroup.COMPUTER.getGroupId());
+ userData.setFlagName("Computer.png");
pickedCards = new ArrayList<>();
}
diff --git a/Mage.Server/src/main/java/mage/server/Session.java b/Mage.Server/src/main/java/mage/server/Session.java
index d3d2bc5aa1..4d6368fae2 100644
--- a/Mage.Server/src/main/java/mage/server/Session.java
+++ b/Mage.Server/src/main/java/mage/server/Session.java
@@ -140,7 +140,9 @@ public class Session {
if (user == null) {
user = UserManager.getInstance().findUser("Admin");
}
- user.setUserData(new UserData(UserGroup.ADMIN, 0, false, false, false, null, "world.png", false));
+ UserData adminUserData = UserData.getDefaultUserDataView();
+ adminUserData.setGroupId(UserGroup.ADMIN.getGroupId());
+ user.setUserData(adminUserData);
if (!UserManager.getInstance().connectToSession(sessionId, user.getId())) {
logger.info("Error connecting Admin!");
}
diff --git a/Mage.Server/src/main/java/mage/server/User.java b/Mage.Server/src/main/java/mage/server/User.java
index b8003da32d..761a647495 100644
--- a/Mage.Server/src/main/java/mage/server/User.java
+++ b/Mage.Server/src/main/java/mage/server/User.java
@@ -43,7 +43,6 @@ import mage.game.Table;
import mage.game.tournament.TournamentPlayer;
import mage.interfaces.callback.ClientCallback;
import mage.players.net.UserData;
-import mage.players.net.UserGroup;
import mage.server.draft.DraftSession;
import mage.server.game.GameManager;
import mage.server.game.GameSessionPlayer;
@@ -400,7 +399,7 @@ public class User {
public UserData getUserData() {
if (userData == null) {// default these to avaiod NPE -> will be updated from client short after
- return new UserData(UserGroup.DEFAULT, 0, false, false, false, null, "world.png", false);
+ return UserData.getDefaultUserDataView();
}
return this.userData;
}
diff --git a/Mage.Sets/src/mage/sets/conflux/AerieMystics.java b/Mage.Sets/src/mage/sets/conflux/AerieMystics.java
index 1a75a1ede7..1ec573b1d3 100644
--- a/Mage.Sets/src/mage/sets/conflux/AerieMystics.java
+++ b/Mage.Sets/src/mage/sets/conflux/AerieMystics.java
@@ -56,7 +56,7 @@ public class AerieMystics extends CardImpl {
this.subtype.add("Bird");
this.subtype.add("Wizard");
this.power = new MageInt(3);
- this.toughness = new MageInt(4);
+ this.toughness = new MageInt(3);
this.addAbility(FlyingAbility.getInstance());
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(ShroudAbility.getInstance(), Duration.EndOfTurn, filter), new ManaCostsImpl("{1}{G}{U}")));
}
diff --git a/Mage.Sets/src/mage/sets/eighthedition/MoggSentry.java b/Mage.Sets/src/mage/sets/eighthedition/MoggSentry.java
new file mode 100644
index 0000000000..8fc17ab8fa
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/eighthedition/MoggSentry.java
@@ -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.eighthedition;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class MoggSentry extends mage.sets.ninthedition.MoggSentry {
+
+ public MoggSentry(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 203;
+ this.expansionSetCode = "8ED";
+ }
+
+ public MoggSentry(final MoggSentry card) {
+ super(card);
+ }
+
+ @Override
+ public MoggSentry copy() {
+ return new MoggSentry(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/fifthedition/ArensonsAura.java b/Mage.Sets/src/mage/sets/fifthedition/ArensonsAura.java
new file mode 100644
index 0000000000..035bcd316f
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/fifthedition/ArensonsAura.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.fifthedition;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.SacrificeTargetCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.CounterTargetEffect;
+import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterSpell;
+import mage.filter.common.FilterControlledPermanent;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.target.TargetSpell;
+import mage.target.common.TargetControlledPermanent;
+import mage.target.common.TargetEnchantmentPermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class ArensonsAura extends CardImpl {
+
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("an enchantment");
+ private static final FilterSpell filter2 = new FilterSpell("enchantment spell");
+
+ static {
+ filter.add(new CardTypePredicate(CardType.ENCHANTMENT));
+ filter2.add(new CardTypePredicate(CardType.ENCHANTMENT));
+ }
+
+ public ArensonsAura(UUID ownerId) {
+ super(ownerId, 282, "Arenson's Aura", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
+ this.expansionSetCode = "5ED";
+
+ // {W}, Sacrifice an enchantment: Destroy target enchantment.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{W}"));
+ ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(1, 1, filter, true)));
+ ability.addTarget(new TargetEnchantmentPermanent());
+ this.addAbility(ability);
+ // {3}{U}{U}: Counter target enchantment spell.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new ManaCostsImpl("{3}{U}{U}"));
+ ability.addTarget(new TargetSpell(filter2));
+ this.addAbility(ability);
+ }
+
+ public ArensonsAura(final ArensonsAura card) {
+ super(card);
+ }
+
+ @Override
+ public ArensonsAura copy() {
+ return new ArensonsAura(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/iceage/ArensonsAura.java b/Mage.Sets/src/mage/sets/iceage/ArensonsAura.java
new file mode 100644
index 0000000000..5f4340b78d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/iceage/ArensonsAura.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are 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.iceage;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class ArensonsAura extends mage.sets.fifthedition.ArensonsAura {
+
+ public ArensonsAura(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 227;
+ this.expansionSetCode = "ICE";
+ this.rarity = Rarity.COMMON;
+ }
+
+ public ArensonsAura(final ArensonsAura card) {
+ super(card);
+ }
+
+ @Override
+ public ArensonsAura copy() {
+ return new ArensonsAura(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/iceage/Stormbind.java b/Mage.Sets/src/mage/sets/iceage/Stormbind.java
new file mode 100644
index 0000000000..7693ff1a90
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/iceage/Stormbind.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.iceage;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.DiscardCardCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class Stormbind extends CardImpl {
+
+ public Stormbind(UUID ownerId) {
+ super(ownerId, 382, "Stormbind", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{G}");
+ this.expansionSetCode = "ICE";
+
+ // {2}, Discard a card at random: Stormbind deals 2 damage to target creature or player.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl("{2}"));
+ ability.addCost(new DiscardCardCost(true));
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public Stormbind(final Stormbind card) {
+ super(card);
+ }
+
+ @Override
+ public Stormbind copy() {
+ return new Stormbind(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/invasion/CollapsingBorders.java b/Mage.Sets/src/mage/sets/invasion/CollapsingBorders.java
new file mode 100644
index 0000000000..81e3f9c120
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/invasion/CollapsingBorders.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.invasion;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.dynamicvalue.common.DomainValue;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.abilities.effects.common.GainLifeTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class CollapsingBorders extends CardImpl {
+
+ public CollapsingBorders(UUID ownerId) {
+ super(ownerId, 141, "Collapsing Borders", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}");
+ this.expansionSetCode = "INV";
+
+ // Domain - At the beginning of each player's upkeep, that player gains 1 life for each basic land type among lands he or she controls. Then Collapsing Borders deals 3 damage to him or her.
+ Effect effect = new GainLifeTargetEffect(new DomainValue());
+ effect.setText("that player gains 1 life for each basic land type among lands he or she controls.");
+ Ability ability = new BeginningOfUpkeepTriggeredAbility(effect, TargetController.ANY, false);
+ effect = new DamageTargetEffect(3);
+ effect.setText("Then {this} deals 3 damage to him or her.");
+ ability.addEffect(effect);
+ this.addAbility(ability);
+ }
+
+ public CollapsingBorders(final CollapsingBorders card) {
+ super(card);
+ }
+
+ @Override
+ public CollapsingBorders copy() {
+ return new CollapsingBorders(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/invasion/MeteorStorm.java b/Mage.Sets/src/mage/sets/invasion/MeteorStorm.java
new file mode 100644
index 0000000000..a8984d5391
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/invasion/MeteorStorm.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.invasion;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.DiscardTargetCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterCard;
+import mage.target.common.TargetCardInHand;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class MeteorStorm extends CardImpl {
+
+ public MeteorStorm(UUID ownerId) {
+ super(ownerId, 256, "Meteor Storm", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{R}{G}");
+ this.expansionSetCode = "INV";
+
+ // {2}{R}{G}, Discard two cards at random: Meteor Storm deals 4 damage to target creature or player.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(4), new ManaCostsImpl("{2}{R}{G}"));
+ ability.addCost(new DiscardTargetCost(new TargetCardInHand(2, new FilterCard("two cards at random")), true));
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public MeteorStorm(final MeteorStorm card) {
+ super(card);
+ }
+
+ @Override
+ public MeteorStorm copy() {
+ return new MeteorStorm(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/invasion/NightscapeApprentice.java b/Mage.Sets/src/mage/sets/invasion/NightscapeApprentice.java
new file mode 100644
index 0000000000..01642d1884
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/invasion/NightscapeApprentice.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.invasion;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.PutOnLibraryTargetEffect;
+import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
+import mage.abilities.keyword.FirstStrikeAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetControlledCreaturePermanent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class NightscapeApprentice extends CardImpl {
+
+ public NightscapeApprentice(UUID ownerId) {
+ super(ownerId, 112, "Nightscape Apprentice", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{B}");
+ this.expansionSetCode = "INV";
+ this.subtype.add("Zombie");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {U}, {T}: Put target creature you control on top of its owner's library.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutOnLibraryTargetEffect(true), new ManaCostsImpl("{U}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetControlledCreaturePermanent());
+ this.addAbility(ability);
+ // {R}, {T}: Target creature gains first strike until end of turn.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(),
+ Duration.EndOfTurn), new ManaCostsImpl("{R}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public NightscapeApprentice(final NightscapeApprentice card) {
+ super(card);
+ }
+
+ @Override
+ public NightscapeApprentice copy() {
+ return new NightscapeApprentice(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/invasion/OrderedMigration.java b/Mage.Sets/src/mage/sets/invasion/OrderedMigration.java
new file mode 100644
index 0000000000..44220ffbfd
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/invasion/OrderedMigration.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.invasion;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.dynamicvalue.common.DomainValue;
+import mage.abilities.effects.common.CreateTokenEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.game.permanent.token.Token;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class OrderedMigration extends CardImpl {
+
+ public OrderedMigration(UUID ownerId) {
+ super(ownerId, 258, "Ordered Migration", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{3}{W}{U}");
+ this.expansionSetCode = "INV";
+
+ // Domain - Put a 1/1 blue Bird creature token with flying onto the battlefield for each basic land type among lands you control.
+ this.getSpellAbility().addEffect(new CreateTokenEffect(new BirdToken(), new DomainValue()));
+ }
+
+ public OrderedMigration(final OrderedMigration card) {
+ super(card);
+ }
+
+ @Override
+ public OrderedMigration copy() {
+ return new OrderedMigration(this);
+ }
+}
+
+// TODO: There is a player rewards token for this (http://magiccards.info/extra/token/player-rewards-2001/bird.html),
+// but player rewards tokens are not downloaded...
+class BirdToken extends Token {
+ public BirdToken() {
+ super("Bird", "1/1 blue Bird creature token with flying");
+ cardType.add(CardType.CREATURE);
+ color.setBlue(true);
+ subtype.add("Bird");
+ power = new MageInt(1);
+ toughness = new MageInt(1);
+ addAbility(FlyingAbility.getInstance());
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/invasion/StormscapeApprentice.java b/Mage.Sets/src/mage/sets/invasion/StormscapeApprentice.java
new file mode 100644
index 0000000000..5aa022533a
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/invasion/StormscapeApprentice.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.invasion;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.LoseLifeTargetEffect;
+import mage.abilities.effects.common.TapTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.TargetPlayer;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class StormscapeApprentice extends CardImpl {
+
+ public StormscapeApprentice(UUID ownerId) {
+ super(ownerId, 75, "Stormscape Apprentice", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{U}");
+ this.expansionSetCode = "INV";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {W}, {T}: Tap target creature.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new TapTargetEffect(), new ManaCostsImpl("{W}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ // {B}, {T}: Target player loses 1 life.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new LoseLifeTargetEffect(1), new ManaCostsImpl("{B}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetPlayer());
+ this.addAbility(ability);
+ }
+
+ public StormscapeApprentice(final StormscapeApprentice card) {
+ super(card);
+ }
+
+ @Override
+ public StormscapeApprentice copy() {
+ return new StormscapeApprentice(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/invasion/StormscapeMaster.java b/Mage.Sets/src/mage/sets/invasion/StormscapeMaster.java
new file mode 100644
index 0000000000..8899ef20c5
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/invasion/StormscapeMaster.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are 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.invasion;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.GainLifeEffect;
+import mage.abilities.effects.common.LoseLifeTargetEffect;
+import mage.abilities.effects.common.continuous.GainProtectionFromColorTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.TargetPlayer;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class StormscapeMaster extends CardImpl {
+
+ public StormscapeMaster(UUID ownerId) {
+ super(ownerId, 76, "Stormscape Master", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
+ this.expansionSetCode = "INV";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // {W}{W}, {T}: Target creature gains protection from the color of your choice until end of turn.
+ Effect effect = new GainProtectionFromColorTargetEffect(Duration.EndOfTurn);
+ effect.setText("Target creature gains protection from the color of your choice until end of turn.");
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{W}{W}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+
+ // {B}{B}, {T}: Target player loses 2 life and you gain 2 life.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new LoseLifeTargetEffect(2), new ManaCostsImpl("{B}{B}"));
+ ability.addEffect(new GainLifeEffect(2));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetPlayer());
+ this.addAbility(ability);
+ }
+
+ public StormscapeMaster(final StormscapeMaster card) {
+ super(card);
+ }
+
+ @Override
+ public StormscapeMaster copy() {
+ return new StormscapeMaster(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/invasion/StrengthOfUnity.java b/Mage.Sets/src/mage/sets/invasion/StrengthOfUnity.java
new file mode 100644
index 0000000000..576977e0cb
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/invasion/StrengthOfUnity.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.invasion;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.dynamicvalue.common.DomainValue;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.AttachEffect;
+import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
+import mage.abilities.keyword.EnchantAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.TargetPermanent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class StrengthOfUnity extends CardImpl {
+
+ public StrengthOfUnity(UUID ownerId) {
+ super(ownerId, 40, "Strength of Unity", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
+ this.expansionSetCode = "INV";
+ this.subtype.add("Aura");
+
+ // Enchant creature
+ TargetPermanent auraTarget = new TargetCreaturePermanent();
+ this.getSpellAbility().addTarget(auraTarget);
+ this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
+ Ability ability = new EnchantAbility(auraTarget.getTargetName());
+ this.addAbility(ability);
+ // Domain - Enchanted creature gets +1/+1 for each basic land type among lands you control.
+ DomainValue dv = new DomainValue();
+ Effect effect = new BoostEnchantedEffect(dv, dv);
+ effect.setText("Domain - Enchanted creature gets +1/+1 for each basic land type among lands you control.");
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
+ }
+
+ public StrengthOfUnity(final StrengthOfUnity card) {
+ super(card);
+ }
+
+ @Override
+ public StrengthOfUnity copy() {
+ return new StrengthOfUnity(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/invasion/SunscapeApprentice.java b/Mage.Sets/src/mage/sets/invasion/SunscapeApprentice.java
new file mode 100644
index 0000000000..e27bd47b1d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/invasion/SunscapeApprentice.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.invasion;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.PutOnLibraryTargetEffect;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetControlledCreaturePermanent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class SunscapeApprentice extends CardImpl {
+
+ public SunscapeApprentice(UUID ownerId) {
+ super(ownerId, 41, "Sunscape Apprentice", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{W}");
+ this.expansionSetCode = "INV";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {G}, {tap}: Target creature gets +1/+1 until end of turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(1, 1, Duration.EndOfTurn),
+ new ManaCostsImpl("{G}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ // {U}, {tap}: Put target creature you control on top of its owner's library.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutOnLibraryTargetEffect(true),
+ new ManaCostsImpl("{U}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetControlledCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public SunscapeApprentice(final SunscapeApprentice card) {
+ super(card);
+ }
+
+ @Override
+ public SunscapeApprentice copy() {
+ return new SunscapeApprentice(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/invasion/TeferisCare.java b/Mage.Sets/src/mage/sets/invasion/TeferisCare.java
new file mode 100644
index 0000000000..d39b9a9a2f
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/invasion/TeferisCare.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.invasion;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.SacrificeTargetCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.CounterTargetEffect;
+import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterSpell;
+import mage.filter.common.FilterControlledPermanent;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.target.TargetSpell;
+import mage.target.common.TargetControlledPermanent;
+import mage.target.common.TargetEnchantmentPermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class TeferisCare extends CardImpl {
+
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("an enchantment");
+ private static final FilterSpell filter2 = new FilterSpell("enchantment spell");
+
+ static {
+ filter.add(new CardTypePredicate(CardType.ENCHANTMENT));
+ filter2.add(new CardTypePredicate(CardType.ENCHANTMENT));
+ }
+
+ public TeferisCare(UUID ownerId) {
+ super(ownerId, 43, "Teferi's Care", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
+ this.expansionSetCode = "INV";
+
+ // {W}, Sacrifice an enchantment: Destroy target enchantment.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{W}"));
+ ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(1, 1, filter, true)));
+ ability.addTarget(new TargetEnchantmentPermanent());
+ this.addAbility(ability);
+ // {3}{U}{U}: Counter target enchantment spell.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new ManaCostsImpl("{3}{U}{U}"));
+ ability.addTarget(new TargetSpell(filter2));
+ this.addAbility(ability);
+ }
+
+ public TeferisCare(final TeferisCare card) {
+ super(card);
+ }
+
+ @Override
+ public TeferisCare copy() {
+ return new TeferisCare(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/invasion/ThornscapeMaster.java b/Mage.Sets/src/mage/sets/invasion/ThornscapeMaster.java
new file mode 100644
index 0000000000..66c337c8d4
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/invasion/ThornscapeMaster.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.invasion;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.abilities.effects.common.continuous.GainProtectionFromColorTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class ThornscapeMaster extends CardImpl {
+
+ public ThornscapeMaster(UUID ownerId) {
+ super(ownerId, 216, "Thornscape Master", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{G}{G}");
+ this.expansionSetCode = "INV";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // {R}{R}, {T}: Thornscape Master deals 2 damage to target creature.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl("{R}{R}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ // {W}{W}, {T}: Target creature gains protection from the color of your choice until end of turn.
+ Effect effect = new GainProtectionFromColorTargetEffect(Duration.EndOfTurn);
+ effect.setText("Target creature gains protection from the color of your choice until end of turn.");
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{W}{W}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public ThornscapeMaster(final ThornscapeMaster card) {
+ super(card);
+ }
+
+ @Override
+ public ThornscapeMaster copy() {
+ return new ThornscapeMaster(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/invasion/WayfaringGiant.java b/Mage.Sets/src/mage/sets/invasion/WayfaringGiant.java
new file mode 100644
index 0000000000..cae927adb3
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/invasion/WayfaringGiant.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.invasion;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.dynamicvalue.common.DomainValue;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class WayfaringGiant extends CardImpl {
+
+ public WayfaringGiant(UUID ownerId) {
+ super(ownerId, 44, "Wayfaring Giant", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{5}{W}");
+ this.expansionSetCode = "INV";
+ this.subtype.add("Giant");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(3);
+
+ // Domain - Wayfaring Giant gets +1/+1 for each basic land type among lands you control.
+ DomainValue dv = new DomainValue();
+ Effect effect = new BoostSourceEffect(dv, dv, Duration.WhileOnBattlefield);
+ effect.setText("Domain - {this} gets +1/+1 for each basic land type among lands you control.");
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
+ }
+
+ public WayfaringGiant(final WayfaringGiant card) {
+ super(card);
+ }
+
+ @Override
+ public WayfaringGiant copy() {
+ return new WayfaringGiant(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/magicorigins/ErebosTitan.java b/Mage.Sets/src/mage/sets/magicorigins/ErebosTitan.java
index 0ad18c4d43..04ed9f4718 100644
--- a/Mage.Sets/src/mage/sets/magicorigins/ErebosTitan.java
+++ b/Mage.Sets/src/mage/sets/magicorigins/ErebosTitan.java
@@ -45,9 +45,7 @@ import mage.constants.Duration;
import mage.constants.Rarity;
import mage.constants.TargetController;
import mage.constants.Zone;
-import mage.filter.common.FilterCreatureCard;
import mage.filter.common.FilterCreaturePermanent;
-import mage.filter.predicate.other.OwnerPredicate;
import mage.filter.predicate.permanent.ControllerPredicate;
import mage.game.Game;
import mage.game.events.GameEvent;
@@ -61,11 +59,9 @@ import mage.players.Player;
public class ErebosTitan extends CardImpl {
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent();
- private final static FilterCreatureCard filterCard = new FilterCreatureCard();
static {
filter.add(new ControllerPredicate(TargetController.OPPONENT));
- filter.add(new OwnerPredicate(TargetController.OPPONENT));
}
public ErebosTitan(UUID ownerId) {
@@ -122,7 +118,10 @@ class ErebosTitanTriggeredAbility extends TriggeredAbilityImpl {
if (zEvent.getFromZone().equals(Zone.GRAVEYARD)) {
Card card = game.getCard(zEvent.getTargetId());
Player controller = game.getPlayer(getControllerId());
- return card != null && controller != null && controller.hasOpponent(card.getOwnerId(), game);
+ return card != null
+ && card.getCardType().contains(CardType.CREATURE)
+ && controller != null
+ && controller.hasOpponent(card.getOwnerId(), game);
}
return false;
}
diff --git a/Mage.Sets/src/mage/sets/mediainserts/SilverDrake.java b/Mage.Sets/src/mage/sets/mediainserts/SilverDrake.java
new file mode 100644
index 0000000000..b1b35f56bc
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mediainserts/SilverDrake.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.mediainserts;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.ReturnToHandChosenControlledPermanentEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.ColorPredicate;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class SilverDrake extends CardImpl {
+
+ static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("white or blue creature you control");
+
+ static {
+ filter.add(Predicates.or(new ColorPredicate(ObjectColor.WHITE), new ColorPredicate(ObjectColor.BLUE)));
+ }
+
+ public SilverDrake(UUID ownerId) {
+ super(ownerId, 13, "Silver Drake", Rarity.SPECIAL, new CardType[]{CardType.CREATURE}, "{1}{W}{U}");
+ this.expansionSetCode = "MBP";
+ this.subtype.add("Drake");
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+ // When Silver Drake enters the battlefield, return a white or blue creature you control to its owner's hand.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(filter), false));
+ }
+
+ public SilverDrake(final SilverDrake card) {
+ super(card);
+ }
+
+ @Override
+ public SilverDrake copy() {
+ return new SilverDrake(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ninthedition/MoggSentry.java b/Mage.Sets/src/mage/sets/ninthedition/MoggSentry.java
new file mode 100644
index 0000000000..c1ce8de3b8
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/ninthedition/MoggSentry.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.ninthedition;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SpellCastOpponentTriggeredAbility;
+import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class MoggSentry extends CardImpl {
+
+ public MoggSentry(UUID ownerId) {
+ super(ownerId, 204, "Mogg Sentry", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{R}");
+ this.expansionSetCode = "9ED";
+ this.subtype.add("Goblin");
+ this.subtype.add("Warrior");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Whenever an opponent casts a spell, Mogg Sentry gets +2/+2 until end of turn.
+ this.addAbility(new SpellCastOpponentTriggeredAbility(new BoostSourceEffect(2, 2, Duration.EndOfTurn), false));
+ }
+
+ public MoggSentry(final MoggSentry card) {
+ super(card);
+ }
+
+ @Override
+ public MoggSentry copy() {
+ return new MoggSentry(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/AlphaKavu.java b/Mage.Sets/src/mage/sets/planeshift/AlphaKavu.java
new file mode 100644
index 0000000000..8b59b30151
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/AlphaKavu.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planeshift;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class AlphaKavu extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Kavu");
+
+ static {
+ filter.add(new SubtypePredicate("Kavu"));
+ }
+
+ public AlphaKavu(UUID ownerId) {
+ super(ownerId, 77, "Alpha Kavu", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{G}");
+ this.expansionSetCode = "PLS";
+ this.subtype.add("Kavu");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // {1}{G}: Target Kavu creature gets -1/+1 until end of turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(-1, 1, Duration.EndOfTurn),
+ new ManaCostsImpl("{1}{G}"));
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public AlphaKavu(final AlphaKavu card) {
+ super(card);
+ }
+
+ @Override
+ public AlphaKavu copy() {
+ return new AlphaKavu(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/AncientSpider.java b/Mage.Sets/src/mage/sets/planeshift/AncientSpider.java
new file mode 100644
index 0000000000..9b902ddc37
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/AncientSpider.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planeshift;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.keyword.FirstStrikeAbility;
+import mage.abilities.keyword.ReachAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class AncientSpider extends CardImpl {
+
+ public AncientSpider(UUID ownerId) {
+ super(ownerId, 96, "Ancient Spider", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{G}{W}");
+ this.expansionSetCode = "PLS";
+ this.subtype.add("Spider");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(5);
+
+ // First strike
+ this.addAbility(FirstStrikeAbility.getInstance());
+ // Reach
+ this.addAbility(ReachAbility.getInstance());
+ }
+
+ public AncientSpider(final AncientSpider card) {
+ super(card);
+ }
+
+ @Override
+ public AncientSpider copy() {
+ return new AncientSpider(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/AuraBlast.java b/Mage.Sets/src/mage/sets/planeshift/AuraBlast.java
new file mode 100644
index 0000000000..04023a9be5
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/AuraBlast.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planeshift;
+
+import java.util.UUID;
+import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.target.common.TargetEnchantmentPermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class AuraBlast extends CardImpl {
+
+ public AuraBlast(UUID ownerId) {
+ super(ownerId, 1, "Aura Blast", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{W}");
+ this.expansionSetCode = "PLS";
+
+ // Destroy target enchantment.
+ this.getSpellAbility().addEffect(new DestroyTargetEffect());
+ this.getSpellAbility().addTarget(new TargetEnchantmentPermanent());
+ // Draw a card.
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ }
+
+ public AuraBlast(final AuraBlast card) {
+ super(card);
+ }
+
+ @Override
+ public AuraBlast copy() {
+ return new AuraBlast(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/CavernHarpy.java b/Mage.Sets/src/mage/sets/planeshift/CavernHarpy.java
index 21b26b0110..736ed2e4c3 100644
--- a/Mage.Sets/src/mage/sets/planeshift/CavernHarpy.java
+++ b/Mage.Sets/src/mage/sets/planeshift/CavernHarpy.java
@@ -30,12 +30,11 @@ package mage.sets.planeshift;
import java.util.UUID;
import mage.MageInt;
import mage.ObjectColor;
-import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.PayLifeCost;
+import mage.abilities.effects.common.ReturnToHandChosenControlledPermanentEffect;
import mage.abilities.effects.common.ReturnToHandSourceEffect;
-import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.constants.CardType;
@@ -44,7 +43,6 @@ import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.ColorPredicate;
-import mage.target.common.TargetControlledCreaturePermanent;
/**
*
@@ -53,11 +51,11 @@ import mage.target.common.TargetControlledCreaturePermanent;
public class CavernHarpy extends CardImpl {
static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("blue or black creature you control");
-
+
static {
filter.add(Predicates.or(new ColorPredicate(ObjectColor.BLUE), new ColorPredicate(ObjectColor.BLACK)));
}
-
+
public CavernHarpy(UUID ownerId) {
super(ownerId, 97, "Cavern Harpy", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{U}{B}");
this.expansionSetCode = "PLS";
@@ -70,9 +68,7 @@ public class CavernHarpy extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
// When Cavern Harpy enters the battlefield, return a blue or black creature you control to its owner's hand.
- Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), false);
- ability.addTarget(new TargetControlledCreaturePermanent(1,1,filter, false));
- this.addAbility(ability);
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(filter), false));
// Pay 1 life: Return Cavern Harpy to its owner's hand.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandSourceEffect(true), new PayLifeCost(1)));
}
diff --git a/Mage.Sets/src/mage/sets/planeshift/HornedKavu.java b/Mage.Sets/src/mage/sets/planeshift/HornedKavu.java
new file mode 100644
index 0000000000..5349f3862d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/HornedKavu.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planeshift;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.ReturnToHandChosenControlledPermanentEffect;
+import mage.abilities.effects.common.ReturnToHandChosenControlledPermanentEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.ColorPredicate;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class HornedKavu extends CardImpl {
+
+ static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("red or green creature you control");
+
+ static {
+ filter.add(Predicates.or(new ColorPredicate(ObjectColor.RED), new ColorPredicate(ObjectColor.GREEN)));
+ }
+
+ public HornedKavu(UUID ownerId) {
+ super(ownerId, 110, "Horned Kavu", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{R}{G}");
+ this.expansionSetCode = "PLS";
+ this.subtype.add("Kavu");
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(4);
+
+ // When Horned Kavu enters the battlefield, return a red or green creature you control to its owner's hand.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(filter), false));
+ }
+
+ public HornedKavu(final HornedKavu card) {
+ super(card);
+ }
+
+ @Override
+ public HornedKavu copy() {
+ return new HornedKavu(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/HuntingDrake.java b/Mage.Sets/src/mage/sets/planeshift/HuntingDrake.java
new file mode 100644
index 0000000000..1cbd127304
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/HuntingDrake.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planeshift;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.PutOnLibraryTargetEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.ColorPredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class HuntingDrake extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red or green creature");
+
+ static {
+ filter.add(Predicates.or(new ColorPredicate(ObjectColor.RED), new ColorPredicate(ObjectColor.GREEN)));
+ }
+
+ public HuntingDrake(UUID ownerId) {
+ super(ownerId, 27, "Hunting Drake", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{4}{U}");
+ this.expansionSetCode = "PLS";
+ this.subtype.add("Drake");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+ // When Hunting Drake enters the battlefield, put target red or green creature on top of its owner's library.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new PutOnLibraryTargetEffect(true));
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public HuntingDrake(final HuntingDrake card) {
+ super(card);
+ }
+
+ @Override
+ public HuntingDrake copy() {
+ return new HuntingDrake(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/Implode.java b/Mage.Sets/src/mage/sets/planeshift/Implode.java
new file mode 100644
index 0000000000..af5a9925b7
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/Implode.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planeshift;
+
+import java.util.UUID;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.target.common.TargetLandPermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class Implode extends CardImpl {
+
+ public Implode(UUID ownerId) {
+ super(ownerId, 62, "Implode", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{4}{R}");
+ this.expansionSetCode = "PLS";
+
+ // Destroy target land.
+ this.getSpellAbility().addEffect(new DestroyTargetEffect());
+ this.getSpellAbility().addTarget(new TargetLandPermanent());
+ // Draw a card.
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ }
+
+ public Implode(final Implode card) {
+ super(card);
+ }
+
+ @Override
+ public Implode copy() {
+ return new Implode(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/LavaZombie.java b/Mage.Sets/src/mage/sets/planeshift/LavaZombie.java
new file mode 100644
index 0000000000..eaa98959ca
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/LavaZombie.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planeshift;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.ReturnToHandChosenControlledPermanentEffect;
+import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.ColorPredicate;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class LavaZombie extends CardImpl {
+
+ static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("black or red creature you control");
+
+ static {
+ filter.add(Predicates.or(new ColorPredicate(ObjectColor.BLACK), new ColorPredicate(ObjectColor.RED)));
+ }
+
+ public LavaZombie(UUID ownerId) {
+ super(ownerId, 113, "Lava Zombie", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{B}{R}");
+ this.expansionSetCode = "PLS";
+ this.subtype.add("Zombie");
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(3);
+
+ // When Lava Zombie enters the battlefield, return a black or red creature you control to its owner's hand.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(filter), false));
+ // {2}: Lava Zombie gets +1/+0 until end of turn.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1,0, Duration.EndOfTurn), new ManaCostsImpl("{2}")));
+ }
+
+ public LavaZombie(final LavaZombie card) {
+ super(card);
+ }
+
+ @Override
+ public LavaZombie copy() {
+ return new LavaZombie(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/MoggSentry.java b/Mage.Sets/src/mage/sets/planeshift/MoggSentry.java
new file mode 100644
index 0000000000..2662dd90ef
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/MoggSentry.java
@@ -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.planeshift;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class MoggSentry extends mage.sets.ninthedition.MoggSentry {
+
+ public MoggSentry(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 69;
+ this.expansionSetCode = "PLS";
+ }
+
+ public MoggSentry(final MoggSentry card) {
+ super(card);
+ }
+
+ @Override
+ public MoggSentry copy() {
+ return new MoggSentry(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/MultanisHarmony.java b/Mage.Sets/src/mage/sets/planeshift/MultanisHarmony.java
new file mode 100644
index 0000000000..2b2c21b57b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/MultanisHarmony.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planeshift;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.common.AttachEffect;
+import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect;
+import mage.abilities.keyword.EnchantAbility;
+import mage.abilities.mana.AnyColorManaAbility;
+import mage.cards.CardImpl;
+import mage.constants.AttachmentType;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.TargetPermanent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class MultanisHarmony extends CardImpl {
+
+ public MultanisHarmony(UUID ownerId) {
+ super(ownerId, 84, "Multani's Harmony", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{G}");
+ this.expansionSetCode = "PLS";
+ this.subtype.add("Aura");
+
+ // Enchant creature
+ TargetPermanent auraTarget = new TargetCreaturePermanent();
+ this.getSpellAbility().addTarget(auraTarget);
+ this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility));
+ Ability ability = new EnchantAbility(auraTarget.getTargetName());
+ this.addAbility(ability);
+ // Enchanted creature has "{T}: Add one mana of any color to your mana pool."
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(new AnyColorManaAbility(),
+ AttachmentType.AURA, Duration.WhileOnBattlefield, "Enchanted creature has \"{T}: Add one mana of any color to your mana pool.\"")));
+ }
+
+ public MultanisHarmony(final MultanisHarmony card) {
+ super(card);
+ }
+
+ @Override
+ public MultanisHarmony copy() {
+ return new MultanisHarmony(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/SilverDrake.java b/Mage.Sets/src/mage/sets/planeshift/SilverDrake.java
new file mode 100644
index 0000000000..1f59eefd2a
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/SilverDrake.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are 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.planeshift;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class SilverDrake extends mage.sets.mediainserts.SilverDrake {
+
+ public SilverDrake(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 125;
+ this.expansionSetCode = "PLS";
+ this.rarity = Rarity.COMMON;
+ }
+
+ public SilverDrake(final SilverDrake card) {
+ super(card);
+ }
+
+ @Override
+ public SilverDrake copy() {
+ return new SilverDrake(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/Singe.java b/Mage.Sets/src/mage/sets/planeshift/Singe.java
new file mode 100644
index 0000000000..4976c43013
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/Singe.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planeshift;
+
+import java.util.UUID;
+import mage.ObjectColor;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.abilities.effects.common.continuous.BecomesColorTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class Singe extends CardImpl {
+
+ public Singe(UUID ownerId) {
+ super(ownerId, 71, "Singe", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{R}");
+ this.expansionSetCode = "PLS";
+
+ // Singe deals 1 damage to target creature. That creature becomes black until end of turn.
+ this.getSpellAbility().addEffect(new DamageTargetEffect(1));
+ Effect effect = new BecomesColorTargetEffect(ObjectColor.BLACK, Duration.EndOfTurn);
+ effect.setText("That creature becomes black until end of turn.");
+ this.getSpellAbility().addEffect(effect);
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent());
+
+ }
+
+ public Singe(final Singe card) {
+ super(card);
+ }
+
+ @Override
+ public Singe copy() {
+ return new Singe(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/SlingshotGoblin.java b/Mage.Sets/src/mage/sets/planeshift/SlingshotGoblin.java
new file mode 100644
index 0000000000..d61706be41
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/SlingshotGoblin.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planeshift;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.ColorPredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class SlingshotGoblin extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("blue creature");
+
+ static {
+ filter.add(new ColorPredicate(ObjectColor.BLUE));
+ }
+
+ public SlingshotGoblin(UUID ownerId) {
+ super(ownerId, 72, "Slingshot Goblin", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{R}");
+ this.expansionSetCode = "PLS";
+ this.subtype.add("Goblin");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // {R}, {tap}: Slingshot Goblin deals 2 damage to target blue creature.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new ManaCostsImpl("{R}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public SlingshotGoblin(final SlingshotGoblin card) {
+ super(card);
+ }
+
+ @Override
+ public SlingshotGoblin copy() {
+ return new SlingshotGoblin(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/SteelLeafPaladin.java b/Mage.Sets/src/mage/sets/planeshift/SteelLeafPaladin.java
new file mode 100644
index 0000000000..8f49bd073c
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/SteelLeafPaladin.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planeshift;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.ReturnToHandChosenControlledPermanentEffect;
+import mage.abilities.keyword.FirstStrikeAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.ColorPredicate;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class SteelLeafPaladin extends CardImpl {
+
+ static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("green or white creature you control");
+
+ static {
+ filter.add(Predicates.or(new ColorPredicate(ObjectColor.GREEN), new ColorPredicate(ObjectColor.WHITE)));
+ }
+
+ public SteelLeafPaladin(UUID ownerId) {
+ super(ownerId, 127, "Steel Leaf Paladin", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{4}{G}{W}");
+ this.expansionSetCode = "PLS";
+ this.subtype.add("Elf");
+ this.subtype.add("Knight");
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(4);
+
+ // First strike
+ this.addAbility(FirstStrikeAbility.getInstance());
+ // When Steel Leaf Paladin enters the battlefield, return a green or white creature you control to its owner's hand.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(filter), false));
+ }
+
+ public SteelLeafPaladin(final SteelLeafPaladin card) {
+ super(card);
+ }
+
+ @Override
+ public SteelLeafPaladin copy() {
+ return new SteelLeafPaladin(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/StoneKavu.java b/Mage.Sets/src/mage/sets/planeshift/StoneKavu.java
new file mode 100644
index 0000000000..ac86fb3c15
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/StoneKavu.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planeshift;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class StoneKavu extends CardImpl {
+
+ public StoneKavu(UUID ownerId) {
+ super(ownerId, 93, "Stone Kavu", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{4}{G}");
+ this.expansionSetCode = "PLS";
+ this.subtype.add("Kavu");
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // {R}: Stone Kavu gets +1/+0 until end of turn.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}")));
+ // {W}: Stone Kavu gets +0/+1 until end of turn.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(0, 1, Duration.EndOfTurn), new ManaCostsImpl("{W}")));
+ }
+
+ public StoneKavu(final StoneKavu card) {
+ super(card);
+ }
+
+ @Override
+ public StoneKavu copy() {
+ return new StoneKavu(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/Strafe.java b/Mage.Sets/src/mage/sets/planeshift/Strafe.java
new file mode 100644
index 0000000000..aaeca58987
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/Strafe.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planeshift;
+
+import java.util.UUID;
+import mage.ObjectColor;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.ColorPredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class Strafe extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nonred creature");
+
+ static {
+ filter.add(Predicates.not(new ColorPredicate(ObjectColor.RED)));
+ }
+
+ public Strafe(UUID ownerId) {
+ super(ownerId, 73, "Strafe", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{R}");
+ this.expansionSetCode = "PLS";
+
+ // Strafe deals 3 damage to target nonred creature.
+ this.getSpellAbility().addEffect(new DamageTargetEffect(3));
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
+ }
+
+ public Strafe(final Strafe card) {
+ super(card);
+ }
+
+ @Override
+ public Strafe copy() {
+ return new Strafe(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/VolcanoImp.java b/Mage.Sets/src/mage/sets/planeshift/VolcanoImp.java
new file mode 100644
index 0000000000..e2b1691078
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/VolcanoImp.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planeshift;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
+import mage.abilities.keyword.FirstStrikeAbility;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class VolcanoImp extends CardImpl {
+
+ public VolcanoImp(UUID ownerId) {
+ super(ownerId, 56, "Volcano Imp", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{B}");
+ this.expansionSetCode = "PLS";
+ this.subtype.add("Imp");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+ // {1}{R}: Volcano Imp gains first strike until end of turn.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{1}{R}")));
+
+ }
+
+ public VolcanoImp(final VolcanoImp card) {
+ super(card);
+ }
+
+ @Override
+ public VolcanoImp copy() {
+ return new VolcanoImp(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/timeshifted/Stormbind.java b/Mage.Sets/src/mage/sets/timeshifted/Stormbind.java
new file mode 100644
index 0000000000..4d266e15f2
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/timeshifted/Stormbind.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are 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.timeshifted;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LoneFox
+
+ */
+public class Stormbind extends mage.sets.iceage.Stormbind {
+
+ public Stormbind(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 102;
+ this.expansionSetCode = "TSB";
+ this.rarity = Rarity.SPECIAL;
+ }
+
+ public Stormbind(final Stormbind card) {
+ super(card);
+ }
+
+ @Override
+ public Stormbind copy() {
+ return new Stormbind(this);
+ }
+}
diff --git a/Mage/src/mage/abilities/costs/AlternativeCostSourceAbility.java b/Mage/src/mage/abilities/costs/AlternativeCostSourceAbility.java
index adad581065..5fb7fd20f9 100644
--- a/Mage/src/mage/abilities/costs/AlternativeCostSourceAbility.java
+++ b/Mage/src/mage/abilities/costs/AlternativeCostSourceAbility.java
@@ -207,7 +207,7 @@ public class AlternativeCostSourceAbility extends StaticAbility implements Alter
@Override
public String getCastMessageSuffix(Game game) {
- return alternateCosts.isEmpty() ? " without paying it's mana costs" : " using alternative casting costs";
+ return alternateCosts.isEmpty() ? " without paying its mana costs" : " using alternative casting costs";
}
@Override
diff --git a/Mage/src/mage/abilities/costs/common/ReturnToHandSourceCost.java b/Mage/src/mage/abilities/costs/common/ReturnToHandSourceCost.java
index a9b64607e8..43ee14395b 100644
--- a/Mage/src/mage/abilities/costs/common/ReturnToHandSourceCost.java
+++ b/Mage/src/mage/abilities/costs/common/ReturnToHandSourceCost.java
@@ -1,16 +1,16 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
@@ -20,7 +20,7 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
@@ -42,7 +42,7 @@ import mage.game.permanent.Permanent;
public class ReturnToHandSourceCost extends CostImpl {
public ReturnToHandSourceCost() {
- this.text = "return {this} to it's owner's hand";
+ this.text = "return {this} to its owner's hand";
}
public ReturnToHandSourceCost(ReturnToHandSourceCost cost) {
diff --git a/Mage/src/mage/abilities/costs/common/ReturnToHandTargetPermanentCost.java b/Mage/src/mage/abilities/costs/common/ReturnToHandTargetPermanentCost.java
index dc8c231e4b..4506854c70 100644
--- a/Mage/src/mage/abilities/costs/common/ReturnToHandTargetPermanentCost.java
+++ b/Mage/src/mage/abilities/costs/common/ReturnToHandTargetPermanentCost.java
@@ -1,16 +1,16 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
@@ -20,7 +20,7 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
@@ -47,9 +47,9 @@ public class ReturnToHandTargetPermanentCost extends CostImpl {
public ReturnToHandTargetPermanentCost(TargetControlledPermanent target) {
this.addTarget(target);
if (target.getMaxNumberOfTargets() > 1 && target.getMaxNumberOfTargets() == target.getNumberOfTargets()) {
- this.text = new StringBuilder("return ").append(target.getMaxNumberOfTargets()).append(" ").append(target.getTargetName()).append(" you control to it's owner's hand").toString();
+ this.text = new StringBuilder("return ").append(target.getMaxNumberOfTargets()).append(" ").append(target.getTargetName()).append(" you control to its owner's hand").toString();
} else {
- this.text = new StringBuilder("return ").append(target.getTargetName()).append(" you control to it's owner's hand").toString();
+ this.text = new StringBuilder("return ").append(target.getTargetName()).append(" you control to its owner's hand").toString();
}
}
diff --git a/Mage/src/mage/abilities/effects/common/HideawayPlayEffect.java b/Mage/src/mage/abilities/effects/common/HideawayPlayEffect.java
index 15ba5f0aa3..b8333d2d39 100644
--- a/Mage/src/mage/abilities/effects/common/HideawayPlayEffect.java
+++ b/Mage/src/mage/abilities/effects/common/HideawayPlayEffect.java
@@ -82,7 +82,7 @@ public class HideawayPlayEffect extends OneShotEffect {
// The land's last ability allows you to play the removed card as part of the resolution of that ability.
// Timing restrictions based on the card's type are ignored (for instance, if it's a creature or sorcery).
// Other play restrictions are not (such as "Play [this card] only during combat").
- if (controller.chooseUse(Outcome.Benefit, "Cast "+ card.getLogName() + " without paying it's mana cost?", source, game)) {
+ if (controller.chooseUse(Outcome.Benefit, "Cast "+ card.getLogName() + " without paying its mana cost?", source, game)) {
card.setFaceDown(false, game);
return controller.cast(card.getSpellAbility(), game, true);
}
diff --git a/Mage/src/mage/abilities/effects/common/PutOnLibrarySourceEffect.java b/Mage/src/mage/abilities/effects/common/PutOnLibrarySourceEffect.java
index 0d5c05ecee..9bb9cbe42a 100644
--- a/Mage/src/mage/abilities/effects/common/PutOnLibrarySourceEffect.java
+++ b/Mage/src/mage/abilities/effects/common/PutOnLibrarySourceEffect.java
@@ -98,7 +98,7 @@ public class PutOnLibrarySourceEffect extends OneShotEffect {
} else {
// Put Champion of Stray Souls on top of your library from your graveyard
sb.append("put {this} on ");
- sb.append(onTop ? "top" : "the bottom").append(" of it's owner's library");
+ sb.append(onTop ? "top" : "the bottom").append(" of its owner's library");
}
return sb.toString();
diff --git a/Mage/src/mage/abilities/effects/common/PutOnLibraryTargetEffect.java b/Mage/src/mage/abilities/effects/common/PutOnLibraryTargetEffect.java
index a337cfc3d0..2b86084bb9 100644
--- a/Mage/src/mage/abilities/effects/common/PutOnLibraryTargetEffect.java
+++ b/Mage/src/mage/abilities/effects/common/PutOnLibraryTargetEffect.java
@@ -1,16 +1,16 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
@@ -20,7 +20,7 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
@@ -147,7 +147,7 @@ public class PutOnLibraryTargetEffect extends OneShotEffect {
if (this.staticText != null && !this.staticText.isEmpty()) {
return staticText;
}
- StringBuilder sb = new StringBuilder();
+ StringBuilder sb = new StringBuilder();
Target target = mode.getTargets().get(0);
sb.append("Put ");
if (target.getMaxNumberOfTargets() == 0) {
@@ -161,8 +161,8 @@ public class PutOnLibraryTargetEffect extends OneShotEffect {
}
}
sb.append("target ").append(mode.getTargets().get(0).getTargetName()).append(" on ");
- sb.append(onTop ? "top" : "the bottom").append(" of it's owner's library");
-
+ sb.append(onTop ? "top" : "the bottom").append(" of its owner's library");
+
return sb.toString();
}
diff --git a/Mage/src/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlSourceEffect.java b/Mage/src/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlSourceEffect.java
index ee2fb44384..fbf111508c 100644
--- a/Mage/src/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlSourceEffect.java
+++ b/Mage/src/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlSourceEffect.java
@@ -50,7 +50,7 @@ public class ReturnToBattlefieldUnderOwnerControlSourceEffect extends OneShotEff
public ReturnToBattlefieldUnderOwnerControlSourceEffect(boolean tapped) {
super(Outcome.Benefit);
this.tapped = tapped;
- staticText = new StringBuilder("return that card to the battlefield").append(tapped?" tapped":"").append(" under it's owner's control").toString();
+ staticText = new StringBuilder("return that card to the battlefield").append(tapped?" tapped":"").append(" under its owner's control").toString();
}
public ReturnToBattlefieldUnderOwnerControlSourceEffect(final ReturnToBattlefieldUnderOwnerControlSourceEffect effect) {
diff --git a/Mage/src/mage/abilities/effects/common/continuous/BoostTargetEffect.java b/Mage/src/mage/abilities/effects/common/continuous/BoostTargetEffect.java
index 5f349d4c3a..21dc10a237 100644
--- a/Mage/src/mage/abilities/effects/common/continuous/BoostTargetEffect.java
+++ b/Mage/src/mage/abilities/effects/common/continuous/BoostTargetEffect.java
@@ -1,16 +1,16 @@
/*
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without modification, are
* permitted provided that the following conditions are met:
- *
+ *
* 1. Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
- *
+ *
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
@@ -20,7 +20,7 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
@@ -133,7 +133,7 @@ public class BoostTargetEffect extends ContinuousEffectImpl {
sb.append(p).append("/");
String t = toughness.toString();
if(!t.startsWith("-")){
- if(p.startsWith("-")) {
+ if(t.equals("0") && p.startsWith("-")) {
sb.append("-");
}
else {
diff --git a/Mage/src/mage/abilities/keyword/MiracleAbility.java b/Mage/src/mage/abilities/keyword/MiracleAbility.java
index 56691ee1c7..2ba71e795d 100644
--- a/Mage/src/mage/abilities/keyword/MiracleAbility.java
+++ b/Mage/src/mage/abilities/keyword/MiracleAbility.java
@@ -94,7 +94,7 @@ import mage.watchers.common.MiracleWatcher;
public class MiracleAbility extends TriggeredAbilityImpl {
private static final String staticRule = " (You may cast this card for its miracle cost when you draw it if it's the first card you drew this turn.)";
private String ruleText;
-
+
@SuppressWarnings("unchecked")
public MiracleAbility(Card card, ManaCosts miracleCosts) {
super(Zone.HAND, new MiracleEffect((ManaCosts)miracleCosts), true);
@@ -141,7 +141,7 @@ class MiracleEffect extends OneShotEffect {
public MiracleEffect(ManaCosts miracleCosts) {
super(Outcome.Benefit);
- this.staticText = "cast this card for it's miracle cost";
+ this.staticText = "cast this card for its miracle cost";
this.miracleCosts = miracleCosts;
}
diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java
index ae55b7bea4..1b0dd091dd 100644
--- a/Mage/src/mage/game/GameImpl.java
+++ b/Mage/src/mage/game/GameImpl.java
@@ -1155,6 +1155,7 @@ public abstract class GameImpl implements Game, Serializable {
public synchronized void setManaPaymentMode(UUID playerId, boolean autoPayment) {
Player player = state.getPlayer(playerId);
if (player != null) {
+ player.getUserData().setManaPoolAutomatic(autoPayment);
player.getManaPool().setAutoPayment(autoPayment);
}
}
@@ -1163,6 +1164,7 @@ public abstract class GameImpl implements Game, Serializable {
public synchronized void setManaPaymentModeRestricted(UUID playerId, boolean autoPaymentRestricted) {
Player player = state.getPlayer(playerId);
if (player != null) {
+ player.getUserData().setManaPoolAutomaticRestricted(autoPaymentRestricted);
player.getManaPool().setAutoPaymentRestricted(autoPaymentRestricted);
}
}
diff --git a/Mage/src/mage/players/PlayerImpl.java b/Mage/src/mage/players/PlayerImpl.java
index dff7eac4c1..9f04992fc8 100644
--- a/Mage/src/mage/players/PlayerImpl.java
+++ b/Mage/src/mage/players/PlayerImpl.java
@@ -2716,6 +2716,8 @@ public abstract class PlayerImpl implements Player, Serializable {
@Override
public void setUserData(UserData userData) {
this.userData = userData;
+ getManaPool().setAutoPayment(userData.isManaPoolAutomatic());
+ getManaPool().setAutoPaymentRestricted(userData.isManaPoolAutomaticRestricted());
}
@Override
diff --git a/Mage/src/mage/players/net/UserData.java b/Mage/src/mage/players/net/UserData.java
index ca11e19238..cb405e34df 100644
--- a/Mage/src/mage/players/net/UserData.java
+++ b/Mage/src/mage/players/net/UserData.java
@@ -17,10 +17,12 @@ public class UserData implements Serializable {
protected UserSkipPrioritySteps userSkipPrioritySteps;
protected String flagName;
protected boolean askMoveToGraveOrder;
+ protected boolean manaPoolAutomatic;
+ protected boolean manaPoolAutomaticRestricted;
public UserData(UserGroup userGroup, int avatarId, boolean showAbilityPickerForced,
boolean allowRequestShowHandCards, boolean confirmEmptyManaPool, UserSkipPrioritySteps userSkipPrioritySteps,
- String flagName, boolean askMoveToGraveOrder) {
+ String flagName, boolean askMoveToGraveOrder, boolean manaPoolAutomatic, boolean manaPoolAutomaticRestricted) {
this.groupId = userGroup.getGroupId();
this.avatarId = avatarId;
this.showAbilityPickerForced = showAbilityPickerForced;
@@ -29,6 +31,8 @@ public class UserData implements Serializable {
this.confirmEmptyManaPool = confirmEmptyManaPool;
this.flagName = flagName;
this.askMoveToGraveOrder = askMoveToGraveOrder;
+ this.manaPoolAutomatic = manaPoolAutomatic;
+ this.manaPoolAutomaticRestricted = manaPoolAutomaticRestricted;
}
public void update(UserData userData) {
@@ -40,10 +44,12 @@ public class UserData implements Serializable {
this.confirmEmptyManaPool = userData.confirmEmptyManaPool;
this.flagName = userData.flagName;
this.askMoveToGraveOrder = userData.askMoveToGraveOrder;
+ this.manaPoolAutomatic = userData.manaPoolAutomatic;
+ this.manaPoolAutomaticRestricted = userData.manaPoolAutomaticRestricted;
}
public static UserData getDefaultUserDataView() {
- return new UserData(UserGroup.DEFAULT, 0, false, false, true, null, "world.png", false);
+ return new UserData(UserGroup.DEFAULT, 0, false, false, true, null, "world.png", false, true, true);
}
public void setGroupId(int groupId) {
@@ -98,6 +104,10 @@ public class UserData implements Serializable {
return flagName;
}
+ public void setFlagName(String flagName) {
+ this.flagName = flagName;
+ }
+
public boolean askMoveToGraveOrder() {
return askMoveToGraveOrder;
}
@@ -106,4 +116,20 @@ public class UserData implements Serializable {
this.askMoveToGraveOrder = askMoveToGraveOrder;
}
+ public boolean isManaPoolAutomatic() {
+ return manaPoolAutomatic;
+ }
+
+ public void setManaPoolAutomatic(boolean manaPoolAutomatic) {
+ this.manaPoolAutomatic = manaPoolAutomatic;
+ }
+
+ public boolean isManaPoolAutomaticRestricted() {
+ return manaPoolAutomaticRestricted;
+ }
+
+ public void setManaPoolAutomaticRestricted(boolean manaPoolAutomaticRestricted) {
+ this.manaPoolAutomaticRestricted = manaPoolAutomaticRestricted;
+ }
+
}
diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt
index 9619396f1a..fed9b3a4cb 100644
--- a/Utils/mtg-cards-data.txt
+++ b/Utils/mtg-cards-data.txt
@@ -14888,7 +14888,7 @@ Skyshroud Blessing|Planeshift|92|U|{1}{G}|Instant|||Lands gain shroud until end
Stone Kavu|Planeshift|93|C|{4}{G}|Creature - Kavu|3|3|{R}: Stone Kavu gets +1/+0 until end of turn.${W}: Stone Kavu gets +0/+1 until end of turn.|
Thornscape Battlemage|Planeshift|94|U|{2}{G}|Creature - Elf Wizard|2|2|Kicker {R} and/or {W} (You may pay an additional {R} and/or {W} as you cast this spell.)$When Thornscape Battlemage enters the battlefield, if it was kicked with its {R} kicker, it deals 2 damage to target creature or player.$When Thornscape Battlemage enters the battlefield, if it was kicked with its {W} kicker, destroy target artifact.|
Thornscape Familiar|Planeshift|95|C|{1}{G}|Creature - Insect|2|1|Red spells and white spells you cast cost {1} less to cast.|
-Ancient Spider|Planeshift|96|R|{2}{G}{W}|Creature - Spider|2|5|First strike; reach (This creature can block creatures with flying.)|
+Ancient Spider|Planeshift|96|R|{2}{G}{W}|Creature - Spider|2|5|First strike, reach (This creature can block creatures with flying.)|
Cavern Harpy|Planeshift|97|C|{U}{B}|Creature - Harpy Beast|2|1|Flying$When Cavern Harpy enters the battlefield, return a blue or black creature you control to its owner's hand.$Pay 1 life: Return Cavern Harpy to its owner's hand.|
Cloud Cover|Planeshift|98|R|{2}{W}{U}|Enchantment|||Whenever another permanent you control becomes the target of a spell or ability an opponent controls, you may return that permanent to its owner's hand.|
Crosis's Charm|Planeshift|99|U|{U}{B}{R}|Instant|||Choose one - Return target permanent to its owner's hand; or destroy target nonblack creature, and it can't be regenerated; or destroy target artifact.|
@@ -27158,4 +27158,4 @@ Plains|Premium Deck Series: Slivers|37|L||Basic Land - Plains|||W|
Island|Premium Deck Series: Slivers|38|L||Basic Land - Island|||U|
Swamp|Premium Deck Series: Slivers|39|L||Basic Land - Swamp|||B|
Mountain|Premium Deck Series: Slivers|40|L||Basic Land - Mountain|||R|
-Forest|Premium Deck Series: Slivers|41|L||Basic Land - Forest|||G|
\ No newline at end of file
+Forest|Premium Deck Series: Slivers|41|L||Basic Land - Forest|||G|