diff --git a/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/cubes/JimDavisCube.java b/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/cubes/JimDavisCube.java
index cb363a30f89..8674c4e2251 100644
--- a/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/cubes/JimDavisCube.java
+++ b/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/cubes/JimDavisCube.java
@@ -91,10 +91,12 @@ public class JimDavisCube extends DraftCube {
cubeCards.add(new CardIdentity("Brainstorm", ""));
cubeCards.add(new CardIdentity("Breeding Pool", ""));
cubeCards.add(new CardIdentity("Brimaz, King of Oreskos", ""));
+ cubeCards.add(new CardIdentity("Bring to Light", ""));
cubeCards.add(new CardIdentity("Broodmate Dragon", ""));
cubeCards.add(new CardIdentity("Cabal Ritual", ""));
cubeCards.add(new CardIdentity("Careful Study", ""));
cubeCards.add(new CardIdentity("Carrion Feeder", ""));
+ cubeCards.add(new CardIdentity("Catacomb Sifter", ""));
cubeCards.add(new CardIdentity("Celestial Colonnade", ""));
cubeCards.add(new CardIdentity("Chained to the Rocks", ""));
cubeCards.add(new CardIdentity("Chain Lightning", ""));
@@ -141,6 +143,7 @@ public class JimDavisCube extends DraftCube {
cubeCards.add(new CardIdentity("Dismember", ""));
cubeCards.add(new CardIdentity("Dragon Hunter", ""));
cubeCards.add(new CardIdentity("Dragonlord Atarka", ""));
+ cubeCards.add(new CardIdentity("Drana, Liberator of Malakir", ""));
cubeCards.add(new CardIdentity("Dream Halls", ""));
cubeCards.add(new CardIdentity("Dryad Militant", ""));
cubeCards.add(new CardIdentity("Dust Bowl", ""));
@@ -148,7 +151,6 @@ public class JimDavisCube extends DraftCube {
cubeCards.add(new CardIdentity("Edric, Spymaster of Trest", ""));
cubeCards.add(new CardIdentity("Eidolon of the Great Revel", ""));
cubeCards.add(new CardIdentity("Electrolyze", ""));
- cubeCards.add(new CardIdentity("Elspeth, Knight-Errant", ""));
cubeCards.add(new CardIdentity("Emrakul, the Aeons Torn", ""));
cubeCards.add(new CardIdentity("Engineered Explosives", ""));
cubeCards.add(new CardIdentity("Enlightened Tutor", ""));
@@ -194,6 +196,7 @@ public class JimDavisCube extends DraftCube {
cubeCards.add(new CardIdentity("Genesis Hydra", ""));
cubeCards.add(new CardIdentity("Ghitu Encampment", ""));
cubeCards.add(new CardIdentity("Ghor-Clan Rampager", ""));
+ cubeCards.add(new CardIdentity("Gideon, Ally of Zendikar", ""));
cubeCards.add(new CardIdentity("Gifts Ungiven", ""));
cubeCards.add(new CardIdentity("Gilded Lotus", ""));
cubeCards.add(new CardIdentity("Gitaxian Probe", ""));
@@ -214,7 +217,6 @@ public class JimDavisCube extends DraftCube {
cubeCards.add(new CardIdentity("Grim Lavamancer", ""));
cubeCards.add(new CardIdentity("Grim Monolith", ""));
cubeCards.add(new CardIdentity("Griselbrand", ""));
- cubeCards.add(new CardIdentity("Grisly Salvage", ""));
cubeCards.add(new CardIdentity("Gush", ""));
cubeCards.add(new CardIdentity("Hallowed Fountain", ""));
cubeCards.add(new CardIdentity("Hallowed Spiritkeeper", ""));
@@ -231,7 +233,6 @@ public class JimDavisCube extends DraftCube {
cubeCards.add(new CardIdentity("Hooting Mandrills", ""));
cubeCards.add(new CardIdentity("Horizon Canopy", ""));
cubeCards.add(new CardIdentity("Hymn to Tourach", ""));
- cubeCards.add(new CardIdentity("Icefeather Aven", ""));
cubeCards.add(new CardIdentity("Imperial Recruiter", ""));
cubeCards.add(new CardIdentity("Imperial Seal", ""));
cubeCards.add(new CardIdentity("Inferno Titan", ""));
@@ -273,6 +274,7 @@ public class JimDavisCube extends DraftCube {
cubeCards.add(new CardIdentity("Lotus Petal", ""));
cubeCards.add(new CardIdentity("Maelstrom Pulse", ""));
cubeCards.add(new CardIdentity("Magma Jet", ""));
+ cubeCards.add(new CardIdentity("Makindi Sliderunner", ""));
cubeCards.add(new CardIdentity("Mana Confluence", ""));
cubeCards.add(new CardIdentity("Mana Leak", ""));
cubeCards.add(new CardIdentity("Mardu Woe-Reaper", ""));
@@ -306,7 +308,6 @@ public class JimDavisCube extends DraftCube {
cubeCards.add(new CardIdentity("Mystical Tutor", ""));
cubeCards.add(new CardIdentity("Necropotence", ""));
cubeCards.add(new CardIdentity("Nether Void", ""));
- cubeCards.add(new CardIdentity("Nimble Mongoose", ""));
cubeCards.add(new CardIdentity("Noble Hierarch", ""));
cubeCards.add(new CardIdentity("Oath of Druids", ""));
cubeCards.add(new CardIdentity("Oblivion Ring", ""));
@@ -319,6 +320,7 @@ public class JimDavisCube extends DraftCube {
cubeCards.add(new CardIdentity("Outpost Siege", ""));
cubeCards.add(new CardIdentity("Overgrown Tomb", ""));
cubeCards.add(new CardIdentity("Pack Rat", ""));
+ cubeCards.add(new CardIdentity("Painful Truths", ""));
cubeCards.add(new CardIdentity("Path to Exile", ""));
cubeCards.add(new CardIdentity("Pernicious Deed", ""));
cubeCards.add(new CardIdentity("Phantasmal Image", ""));
@@ -361,15 +363,14 @@ public class JimDavisCube extends DraftCube {
cubeCards.add(new CardIdentity("Rofellos, Llanowar Emissary", ""));
cubeCards.add(new CardIdentity("Rude Awakening", ""));
cubeCards.add(new CardIdentity("Sacred Foundry", ""));
- cubeCards.add(new CardIdentity("Sagu Mauler", ""));
cubeCards.add(new CardIdentity("Sakura-Tribe Elder", ""));
- cubeCards.add(new CardIdentity("Sarcomancy", ""));
cubeCards.add(new CardIdentity("Sarkhan, the Dragonspeaker", ""));
cubeCards.add(new CardIdentity("Savannah", ""));
cubeCards.add(new CardIdentity("Scalding Tarn", ""));
cubeCards.add(new CardIdentity("Scavenging Ooze", ""));
cubeCards.add(new CardIdentity("Scroll Rack", ""));
cubeCards.add(new CardIdentity("Scrubland", ""));
+ cubeCards.add(new CardIdentity("Scythe Leopard", ""));
cubeCards.add(new CardIdentity("Seachrome Coast", ""));
cubeCards.add(new CardIdentity("Searing Blaze", ""));
cubeCards.add(new CardIdentity("Seat of the Synod", ""));
@@ -377,15 +378,16 @@ public class JimDavisCube extends DraftCube {
cubeCards.add(new CardIdentity("Seething Song", ""));
cubeCards.add(new CardIdentity("Sensei's Divining Top", ""));
cubeCards.add(new CardIdentity("Shadowmage Infiltrator", ""));
+ cubeCards.add(new CardIdentity("Shambling Vent", ""));
cubeCards.add(new CardIdentity("Shardless Agent", ""));
cubeCards.add(new CardIdentity("Shelldock Isle", ""));
cubeCards.add(new CardIdentity("Show and Tell", ""));
cubeCards.add(new CardIdentity("Shrapnel Blast", ""));
- cubeCards.add(new CardIdentity("Shriekmaw", ""));
cubeCards.add(new CardIdentity("Siege Rhino", ""));
cubeCards.add(new CardIdentity("Signal Pest", ""));
cubeCards.add(new CardIdentity("Simic Growth Chamber", ""));
cubeCards.add(new CardIdentity("Simic Signet", ""));
+ cubeCards.add(new CardIdentity("Simic Sky Swallower", ""));
cubeCards.add(new CardIdentity("Sinkhole", ""));
cubeCards.add(new CardIdentity("Skullclamp", ""));
cubeCards.add(new CardIdentity("Skyshroud Elite", ""));
@@ -433,7 +435,6 @@ public class JimDavisCube extends DraftCube {
cubeCards.add(new CardIdentity("Temple Garden", ""));
cubeCards.add(new CardIdentity("Temple of Epiphany", ""));
cubeCards.add(new CardIdentity("Temple of Malice", ""));
- cubeCards.add(new CardIdentity("Temple of Silence", ""));
cubeCards.add(new CardIdentity("Tendrils of Agony", ""));
cubeCards.add(new CardIdentity("Terastodon", ""));
cubeCards.add(new CardIdentity("Terminate", ""));
@@ -447,7 +448,6 @@ public class JimDavisCube extends DraftCube {
cubeCards.add(new CardIdentity("Thoughtseize", ""));
cubeCards.add(new CardIdentity("Thragtusk", ""));
cubeCards.add(new CardIdentity("Thran Dynamo", ""));
- cubeCards.add(new CardIdentity("Thundermaw Hellkite", ""));
cubeCards.add(new CardIdentity("Tidehollow Sculler", ""));
cubeCards.add(new CardIdentity("Time Spiral", ""));
cubeCards.add(new CardIdentity("Timetwister", ""));
@@ -506,7 +506,6 @@ public class JimDavisCube extends DraftCube {
cubeCards.add(new CardIdentity("Xathrid Necromancer", ""));
cubeCards.add(new CardIdentity("Yawgmoth's Will", ""));
cubeCards.add(new CardIdentity("Young Pyromancer", ""));
- cubeCards.add(new CardIdentity("Zombie Cutthroat", ""));
cubeCards.add(new CardIdentity("Zurgo Bellstriker", ""));
}
}
diff --git a/Mage.Sets/src/mage/sets/conspiracy/BoldwyrIntimidator.java b/Mage.Sets/src/mage/sets/conspiracy/BoldwyrIntimidator.java
new file mode 100644
index 00000000000..2ab7eb29e08
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/conspiracy/BoldwyrIntimidator.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.conspiracy;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class BoldwyrIntimidator extends mage.sets.morningtide.BoldwyrIntimidator {
+
+ public BoldwyrIntimidator(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 137;
+ this.expansionSetCode = "CNS";
+ }
+
+ public BoldwyrIntimidator(final BoldwyrIntimidator card) {
+ super(card);
+ }
+
+ @Override
+ public BoldwyrIntimidator copy() {
+ return new BoldwyrIntimidator(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/dissension/DreadSlag.java b/Mage.Sets/src/mage/sets/dissension/DreadSlag.java
new file mode 100644
index 00000000000..58ccae8ffd8
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/dissension/DreadSlag.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.dissension;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.dynamicvalue.DynamicValue;
+import mage.abilities.dynamicvalue.MultipliedValue;
+import mage.abilities.dynamicvalue.common.CardsInControllerHandCount;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.abilities.keyword.TrampleAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class DreadSlag extends CardImpl {
+
+ public DreadSlag(UUID ownerId) {
+ super(ownerId, 109, "Dread Slag", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{B}{R}");
+ this.expansionSetCode = "DIS";
+ this.subtype.add("Horror");
+ this.power = new MageInt(9);
+ this.toughness = new MageInt(9);
+
+ // Trample
+ this.addAbility(TrampleAbility.getInstance());
+ // Dread Slag gets -4/-4 for each card in your hand.
+ DynamicValue amount = new MultipliedValue(new CardsInControllerHandCount(), -4);
+ Effect effect = new BoostSourceEffect(amount, amount, Duration.WhileOnBattlefield);
+ effect.setText("{this} gets -4/-4 for each card in your hand");
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
+ }
+
+ public DreadSlag(final DreadSlag card) {
+ super(card);
+ }
+
+ @Override
+ public DreadSlag copy() {
+ return new DreadSlag(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/futuresight/BoldwyrIntimidator.java b/Mage.Sets/src/mage/sets/futuresight/BoldwyrIntimidator.java
new file mode 100644
index 00000000000..68b8f684401
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/futuresight/BoldwyrIntimidator.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.futuresight;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class BoldwyrIntimidator extends mage.sets.morningtide.BoldwyrIntimidator {
+
+ public BoldwyrIntimidator(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 111;
+ this.expansionSetCode = "FUT";
+ }
+
+ public BoldwyrIntimidator(final BoldwyrIntimidator card) {
+ super(card);
+ }
+
+ @Override
+ public BoldwyrIntimidator copy() {
+ return new BoldwyrIntimidator(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mercadianmasques/SpontaneousGeneration.java b/Mage.Sets/src/mage/sets/mercadianmasques/SpontaneousGeneration.java
new file mode 100644
index 00000000000..6d92e259b88
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mercadianmasques/SpontaneousGeneration.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.mercadianmasques;
+
+import java.util.UUID;
+import mage.abilities.dynamicvalue.common.CardsInControllerHandCount;
+import mage.abilities.effects.common.CreateTokenEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.game.permanent.token.SaprolingToken;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SpontaneousGeneration extends CardImpl {
+
+ public SpontaneousGeneration(UUID ownerId) {
+ super(ownerId, 274, "Spontaneous Generation", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{3}{G}");
+ this.expansionSetCode = "MMQ";
+
+ // Put a 1/1 green Saproling creature token onto the battlefield for each card in your hand.
+ this.getSpellAbility().addEffect(new CreateTokenEffect(new SaprolingToken(), new CardsInControllerHandCount()));
+ }
+
+ public SpontaneousGeneration(final SpontaneousGeneration card) {
+ super(card);
+ }
+
+ @Override
+ public SpontaneousGeneration copy() {
+ return new SpontaneousGeneration(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mirage/Breathstealer.java b/Mage.Sets/src/mage/sets/mirage/Breathstealer.java
new file mode 100644
index 00000000000..97f83251c56
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/Breathstealer.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.mirage;
+
+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 fireshoes
+ */
+public class Breathstealer extends CardImpl {
+
+ public Breathstealer(UUID ownerId) {
+ super(ownerId, 7, "Breathstealer", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{B}");
+ this.expansionSetCode = "MIR";
+ this.subtype.add("Nightstalker");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // {B}: Breathstealer gets +1/-1 until end of turn.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, -1, Duration.EndOfTurn), new ManaCostsImpl("{B}")));
+ }
+
+ public Breathstealer(final Breathstealer card) {
+ super(card);
+ }
+
+ @Override
+ public Breathstealer copy() {
+ return new Breathstealer(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/morningtide/BoldwyrIntimidator.java b/Mage.Sets/src/mage/sets/morningtide/BoldwyrIntimidator.java
new file mode 100644
index 00000000000..e7a229c1b25
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/morningtide/BoldwyrIntimidator.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.morningtide;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.RestrictionEffect;
+import mage.abilities.effects.common.continuous.BecomesCreatureTypeTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class BoldwyrIntimidator extends CardImpl {
+
+ public BoldwyrIntimidator(UUID ownerId) {
+ super(ownerId, 86, "Boldwyr Intimidator", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{5}{R}{R}");
+ this.expansionSetCode = "MOR";
+ this.subtype.add("Giant");
+ this.subtype.add("Warrior");
+ this.power = new MageInt(5);
+ this.toughness = new MageInt(5);
+
+ // Cowards can't block Warriors.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoldwyrIntimidatorEffect()));
+
+ // {R}: Target creature becomes a Coward until end of turn.
+ Effect effect = new BecomesCreatureTypeTargetEffect(Duration.EndOfTurn, new ArrayList<>(Arrays.asList("Coward")), true);
+ effect.setText("Target creature becomes a Coward until end of turn");
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{R}"));
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+
+ // {2}{R}: Target creature becomes a Warrior until end of turn.
+ effect = new BecomesCreatureTypeTargetEffect(Duration.EndOfTurn, new ArrayList<>(Arrays.asList("Warrior")), true);
+ effect.setText("Target creature becomes a Warrior until end of turn");
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{2}{R}"));
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public BoldwyrIntimidator(final BoldwyrIntimidator card) {
+ super(card);
+ }
+
+ @Override
+ public BoldwyrIntimidator copy() {
+ return new BoldwyrIntimidator(this);
+ }
+}
+
+class BoldwyrIntimidatorEffect extends RestrictionEffect {
+
+ BoldwyrIntimidatorEffect() {
+ super(Duration.WhileOnBattlefield);
+ staticText = "Cowards can't block Warriors";
+ }
+
+ BoldwyrIntimidatorEffect(final BoldwyrIntimidatorEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean applies(Permanent permanent, Ability source, Game game) {
+ Permanent sourcePermanent = game.getPermanent(source.getSourceId());
+ if (sourcePermanent != null) {
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) {
+ if (attacker != null && blocker != null) {
+ Permanent sourcePermanent = game.getPermanent(source.getSourceId());
+ if (sourcePermanent != null && attacker.getSubtype().contains("Warrior")) {
+ return !blocker.getSubtype().contains("Coward");
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public BoldwyrIntimidatorEffect copy() {
+ return new BoldwyrIntimidatorEffect(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/morningtide/VengefulFirebrand.java b/Mage.Sets/src/mage/sets/morningtide/VengefulFirebrand.java
new file mode 100644
index 00000000000..2ce4e29736b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/morningtide/VengefulFirebrand.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.morningtide;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.condition.Condition;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.decorator.ConditionalContinuousEffect;
+import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
+import mage.abilities.keyword.HasteAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterCard;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.game.Game;
+import mage.players.Player;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class VengefulFirebrand extends CardImpl {
+
+ public VengefulFirebrand(UUID ownerId) {
+ super(ownerId, 111, "Vengeful Firebrand", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{R}");
+ this.expansionSetCode = "MOR";
+ this.subtype.add("Elemental");
+ this.subtype.add("Warrior");
+ this.power = new MageInt(5);
+ this.toughness = new MageInt(2);
+
+ // Vengeful Firebrand has haste as long as a Warrior card is in your graveyard.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(
+ new GainAbilitySourceEffect(HasteAbility.getInstance(), Duration.WhileOnBattlefield),
+ VengefulFirebrandCondition.getInstance(),
+ "{this} has haste as long as a Warrior card is in your graveyard")));
+
+ // {R}: Vengeful Firebrand gets +1/+0 until end of turn.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}")));
+ }
+
+ public VengefulFirebrand(final VengefulFirebrand card) {
+ super(card);
+ }
+
+ @Override
+ public VengefulFirebrand copy() {
+ return new VengefulFirebrand(this);
+ }
+}
+
+class VengefulFirebrandCondition implements Condition {
+
+ private static VengefulFirebrandCondition fInstance = new VengefulFirebrandCondition();
+ private static final FilterCard filter = new FilterCard("Warrior");
+
+ static {
+ filter.add(new SubtypePredicate("Warrior"));
+ }
+
+ public static Condition getInstance() {
+ return fInstance;
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(source.getControllerId());
+ return player != null && player.getGraveyard().count(filter, game) > 0;
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/planarchaos/SophicCentaur.java b/Mage.Sets/src/mage/sets/planarchaos/SophicCentaur.java
new file mode 100644
index 00000000000..82a85a27141
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/SophicCentaur.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.planarchaos;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.DiscardCardCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.dynamicvalue.DynamicValue;
+import mage.abilities.dynamicvalue.MultipliedValue;
+import mage.abilities.dynamicvalue.common.CardsInControllerHandCount;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.GainLifeEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SophicCentaur extends CardImpl {
+
+ public SophicCentaur(UUID ownerId) {
+ super(ownerId, 139, "Sophic Centaur", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{G}");
+ this.expansionSetCode = "PLC";
+ this.subtype.add("Centaur");
+ this.subtype.add("Spellshaper");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {2}{G}{G}, {tap}, Discard a card: You gain 2 life for each card in your hand.
+ DynamicValue lifeToGainAmount = new MultipliedValue(new CardsInControllerHandCount(), 2);
+ Effect effect = new GainLifeEffect(lifeToGainAmount);
+ effect.setText("You gain 2 life for each card in your hand");
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{2}{G}{G}"));
+ ability.addCost(new TapSourceCost());
+ ability.addCost(new DiscardCardCost());
+ this.addAbility(ability);
+ }
+
+ public SophicCentaur(final SophicCentaur card) {
+ super(card);
+ }
+
+ @Override
+ public SophicCentaur copy() {
+ return new SophicCentaur(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portal/SorcerousSight.java b/Mage.Sets/src/mage/sets/portal/SorcerousSight.java
new file mode 100644
index 00000000000..a3eef859808
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portal/SorcerousSight.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are 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.portal;
+
+import java.util.UUID;
+import mage.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.common.TargetOpponent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SorcerousSight extends CardImpl {
+
+ public SorcerousSight(UUID ownerId) {
+ super(ownerId, 69, "Sorcerous Sight", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{U}");
+ this.expansionSetCode = "POR";
+
+ // Look at target opponent's hand.
+ this.getSpellAbility().addEffect(new SorcerousSightEffect());
+ this.getSpellAbility().addTarget(new TargetOpponent());
+
+ // Draw a card.
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ }
+
+ public SorcerousSight(final SorcerousSight card) {
+ super(card);
+ }
+
+ @Override
+ public SorcerousSight copy() {
+ return new SorcerousSight(this);
+ }
+}
+
+class SorcerousSightEffect extends OneShotEffect {
+
+ SorcerousSightEffect() {
+ super(Outcome.DrawCard);
+ staticText = "Look at target opponent's hand";
+ }
+
+ SorcerousSightEffect(final SorcerousSightEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ Player player = game.getPlayer(targetPointer.getFirst(game, source));
+ MageObject sourceObject = source.getSourceObject(game);
+ if (player != null && controller != null && sourceObject != null) {
+ controller.lookAtCards(sourceObject.getIdName() + " (" + player.getName() + ")", player.getHand(), game);
+ }
+ return true;
+ }
+
+ @Override
+ public SorcerousSightEffect copy() {
+ return new SorcerousSightEffect(this);
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/ravnica/VoyagerStaff.java b/Mage.Sets/src/mage/sets/ravnica/VoyagerStaff.java
new file mode 100644
index 00000000000..fb3eb5ab80c
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/ravnica/VoyagerStaff.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.ravnica;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.ReturnFromExileEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class VoyagerStaff extends CardImpl {
+
+ public VoyagerStaff(UUID ownerId) {
+ super(ownerId, 274, "Voyager Staff", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT}, "{1}");
+ this.expansionSetCode = "RAV";
+
+ // {2}, Sacrifice Voyager Staff: Exile target creature. Return the exiled card to the battlefield under its owner's control at the beginning of the next end step.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new VoyagerStaffEffect(), new GenericManaCost(2));
+ ability.addCost(new SacrificeSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public VoyagerStaff(final VoyagerStaff card) {
+ super(card);
+ }
+
+ @Override
+ public VoyagerStaff copy() {
+ return new VoyagerStaff(this);
+ }
+}
+
+class VoyagerStaffEffect extends OneShotEffect {
+
+ public VoyagerStaffEffect() {
+ super(Outcome.Detriment);
+ staticText = "exile target creature. Return the exiled card to the battlefield under its owner's control at the beginning of the next end step";
+ }
+
+ public VoyagerStaffEffect(final VoyagerStaffEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent creature = game.getPermanent(source.getFirstTarget());
+ Player controller = game.getPlayer(source.getControllerId());
+ Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
+ if (controller != null && creature != null && sourcePermanent != null) {
+ if (controller.moveCardToExileWithInfo(creature, source.getSourceId(), sourcePermanent.getIdName(), source.getSourceId(), game, Zone.BATTLEFIELD, true)) {
+ //create delayed triggered ability
+ AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD, false));
+ delayedAbility.setSourceId(source.getSourceId());
+ delayedAbility.setControllerId(source.getControllerId());
+ delayedAbility.setSourceObject(source.getSourceObject(game), game);
+ game.addDelayedTriggeredAbility(delayedAbility);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public VoyagerStaffEffect copy() {
+ return new VoyagerStaffEffect(this);
+ }
+}
\ No newline at end of file
diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt
index 4173875c04e..64c459a186b 100644
--- a/Utils/mtg-cards-data.txt
+++ b/Utils/mtg-cards-data.txt
@@ -1,4 +1,4 @@
-Ardent Plea|Alara Reborn|1|U|{1}{W}{U}|Enchantment|||Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)$Cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom in a random order.)|
+Ardent Plea|Alara Reborn|1|U|{1}{W}{U}|Enchantment|||Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)$Cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom in a random order.)|
Aven Mimeomancer|Alara Reborn|2|R|{1}{W}{U}|Creature - Bird Wizard|3|1|Flying$At the beginning of your upkeep, you may put a feather counter on target creature. If you do, that creature is 3/1 and has flying for as long as it has a feather counter on it.|
Ethercaste Knight|Alara Reborn|3|C|{W}{U}|Artifact Creature - Human Knight|1|3|Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)|
Ethersworn Shieldmage|Alara Reborn|4|C|{1}{W}{U}|Artifact Creature - Vedalken Wizard|2|2|Flash$When Ethersworn Shieldmage enters the battlefield, prevent all damage that would be dealt to artifact creatures this turn.|
@@ -27973,3 +27973,6 @@ Lone Revenant|Commander 2015|96|R|{3}{U}{U}|Creature - Spirit|4|4|Hexproof (T
Mulldrifter|Commander 2015|97|U|{4}{U}|Creature - Elemental|2|2|Flying$When Mulldrifter enters the battlefield, draw two cards.$Evoke {2}{U} (You may cast this spell for its evoke cost. If you do, it's sacrificed when it enters the battlefield.)|
Mystic Retrieval|Commander 2015|98|U|{3}{U}|Sorcery|||Return target instant or sorcery card from your graveyard to your hand.$Flashback {2}{R} (You may cast this card from your graveyard for its flashback cost. Then exile it.)|
Ninja of the Deep Hours|Commander 2015|99|C|{3}{U}|Creature - Human Ninja|2|2|Ninjutsu {1}{U} ({1}{U}, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand tapped and attacking.)$Whenever Ninja of the Deep Hours deals combat damage to a player, you may draw a card.|
+Kozilek, the Great Distortion|Oath of the Gatewatch|4|M|{8}{D}{D}|Legendary Creature - Eldrazi|12|12|When you cast Kozilek, the Great Distortion, if you have fewer than seven cards in hand, draw cards equal to the difference.$Menace$Discard a card with converted mana cost X: Counter target spell with converted mana cost X.|
+Mirrorpool|Oath of the Gatewatch|174|M||Land|||Mirrorpool enters the battlefield tapped.${T}: Add {D} to your mana pool.${2}{D}, {T}, Sacrifice Mirrorpool: Copy target instant or sorcery spell you control. You may choose new targets for the copy.${4}{D}, {T}, Sacrifice Mirrorpool: Put a token onto the battlefield that's a copy of target creature you control.|
+Wastes|Oath of the Gatewatch|184|C||Basic Land|||{T}: Add {D} to your mana pool.|
\ No newline at end of file