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