From b1ed8378c072513ce2260884a9986e7dd985d10b Mon Sep 17 00:00:00 2001 From: MarcoMarin <> Date: Fri, 25 Mar 2016 06:01:04 -0300 Subject: [PATCH] First few cards from new author. Compilation is broken tho, because CounterType enum isn't accepting my new counter for Cyclone. --- .../src/mage/sets/arabiannights/Cyclone.java | 54 +++++++ .../mage/sets/arabiannights/Oubliette.java | 75 ++++++++++ .../sets/arabiannights/SerendibDjinn.java | 52 +++++++ .../src/mage/sets/arabiannights/Sindbad.java | 52 +++++++ .../src/mage/sets/chronicles/Cyclone.java | 52 +++++++ .../src/mage/sets/fourthedition/Sindbad.java | 107 ++++++++++++++ .../mage/sets/mastersedition/Oubliette.java | 52 +++++++ .../mage/sets/masterseditioniv/Cyclone.java | 118 +++++++++++++++ .../sets/masterseditioniv/SerendibDjinn.java | 134 ++++++++++++++++++ .../src/mage/sets/timeshifted/Sindbad.java | 54 +++++++ 10 files changed, 750 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/arabiannights/Cyclone.java create mode 100644 Mage.Sets/src/mage/sets/arabiannights/Oubliette.java create mode 100644 Mage.Sets/src/mage/sets/arabiannights/SerendibDjinn.java create mode 100644 Mage.Sets/src/mage/sets/arabiannights/Sindbad.java create mode 100644 Mage.Sets/src/mage/sets/chronicles/Cyclone.java create mode 100644 Mage.Sets/src/mage/sets/fourthedition/Sindbad.java create mode 100644 Mage.Sets/src/mage/sets/mastersedition/Oubliette.java create mode 100644 Mage.Sets/src/mage/sets/masterseditioniv/Cyclone.java create mode 100644 Mage.Sets/src/mage/sets/masterseditioniv/SerendibDjinn.java create mode 100644 Mage.Sets/src/mage/sets/timeshifted/Sindbad.java diff --git a/Mage.Sets/src/mage/sets/arabiannights/Cyclone.java b/Mage.Sets/src/mage/sets/arabiannights/Cyclone.java new file mode 100644 index 0000000000..e94e391592 --- /dev/null +++ b/Mage.Sets/src/mage/sets/arabiannights/Cyclone.java @@ -0,0 +1,54 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.arabiannights; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author MarcoMarin + */ +public class Cyclone extends mage.sets.masterseditioniv.Cyclone { + + public Cyclone(UUID ownerId) { + super(ownerId); + this.cardNumber = 29; + this.expansionSetCode = "ARN"; + this.rarity = Rarity.UNCOMMON; + } + + public Cyclone(final Cyclone card) { + super(card); + } + + @Override + public Cyclone copy() { + return new Cyclone(this); + } +} diff --git a/Mage.Sets/src/mage/sets/arabiannights/Oubliette.java b/Mage.Sets/src/mage/sets/arabiannights/Oubliette.java new file mode 100644 index 0000000000..5c19990221 --- /dev/null +++ b/Mage.Sets/src/mage/sets/arabiannights/Oubliette.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.arabiannights; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.LeavesBattlefieldTriggeredAbility; +import mage.abilities.effects.common.ExileTargetForSourceEffect; +import mage.abilities.effects.common.ReturnFromExileForSourceEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterCreaturePermanent; +import mage.target.Target; +import mage.target.TargetPermanent; + +/** + * + * @author MarcoMarin + */ +public class Oubliette extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("target creature"); + + public Oubliette(UUID ownerId) { + super(ownerId, 11, "Oubliette", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}{B}"); + this.expansionSetCode = "ARN"; + + // When Oubliette enters the battlefield, exile target creature and all Auras attached to it. Note the number and kind of counters that were on that creature. + Ability ability1 = new EntersBattlefieldTriggeredAbility(new ExileTargetForSourceEffect(), false); + Target target = new TargetPermanent(filter); + ability1.addTarget(target); + this.addAbility(ability1); + + // When Oubliette leaves the battlefield, return the exiled card to the battlefield under its owner's control tapped with the noted number and kind of counters on it. If you do, return the exiled Aura cards to the battlefield under their owner's control attached to that permanent. + Ability ability2 = new LeavesBattlefieldTriggeredAbility(new ReturnFromExileForSourceEffect(Zone.BATTLEFIELD), false); + this.addAbility(ability2); + } + + public Oubliette(final Oubliette card) { + super(card); + } + + @Override + public Oubliette copy() { + return new Oubliette(this); + } +} diff --git a/Mage.Sets/src/mage/sets/arabiannights/SerendibDjinn.java b/Mage.Sets/src/mage/sets/arabiannights/SerendibDjinn.java new file mode 100644 index 0000000000..d67d42488c --- /dev/null +++ b/Mage.Sets/src/mage/sets/arabiannights/SerendibDjinn.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.arabiannights; + +import java.util.UUID; + +/** + * + * @author MarcoMarin + */ +public class SerendibDjinn extends mage.sets.masterseditioniv.SerendibDjinn { + + public SerendibDjinn(UUID ownerId) { + super(ownerId); + this.cardNumber = 25; + this.expansionSetCode = "ARN"; + } + + public SerendibDjinn(final SerendibDjinn card) { + super(card); + } + + @Override + public SerendibDjinn copy() { + return new SerendibDjinn(this); + } +} diff --git a/Mage.Sets/src/mage/sets/arabiannights/Sindbad.java b/Mage.Sets/src/mage/sets/arabiannights/Sindbad.java new file mode 100644 index 0000000000..46505a64a6 --- /dev/null +++ b/Mage.Sets/src/mage/sets/arabiannights/Sindbad.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.arabiannights; + +import java.util.UUID; + +/** + * + * @author MarcoMarin + */ +public class Sindbad extends mage.sets.fourthedition.Sindbad { + + public Sindbad(UUID ownerId) { + super(ownerId); + this.cardNumber = 27; + this.expansionSetCode = "ARN"; + } + + public Sindbad(final Sindbad card) { + super(card); + } + + @Override + public Sindbad copy() { + return new Sindbad(this); + } +} diff --git a/Mage.Sets/src/mage/sets/chronicles/Cyclone.java b/Mage.Sets/src/mage/sets/chronicles/Cyclone.java new file mode 100644 index 0000000000..612560a986 --- /dev/null +++ b/Mage.Sets/src/mage/sets/chronicles/Cyclone.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.chronicles; + +import java.util.UUID; + +/** + * + * @author MarcoMarin + */ +public class Cyclone extends mage.sets.masterseditioniv.Cyclone { + + public Cyclone(UUID ownerId) { + super(ownerId); + this.cardNumber = 34; + this.expansionSetCode = "CHR"; + } + + public Cyclone(final Cyclone card) { + super(card); + } + + @Override + public Cyclone copy() { + return new Cyclone(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fourthedition/Sindbad.java b/Mage.Sets/src/mage/sets/fourthedition/Sindbad.java new file mode 100644 index 0000000000..b538ed34a8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fourthedition/Sindbad.java @@ -0,0 +1,107 @@ +/* + * 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.fourthedition; + +import java.util.UUID; +import mage.MageInt; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.OneShotEffect; +import mage.cards.Card; +import mage.cards.CardsImpl; +import mage.constants.Outcome; +import mage.constants.Zone; +import mage.filter.FilterCard; +import mage.filter.common.FilterLandCard; +import mage.game.Game; +import mage.players.Player; + +/** + * + * @author MarcoMarin + */ +public class Sindbad extends CardImpl { + + public Sindbad(UUID ownerId) { + super(ownerId, 100, "Sindbad", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{U}"); + this.expansionSetCode = "4ED"; + this.subtype.add("Human"); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // {tap}: Draw a card and reveal it. If it isn't a land card, discard it. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new SindbadEffect(), new TapSourceCost())); + + } + + public Sindbad(final Sindbad card) { + super(card); + } + + @Override + public Sindbad copy() { + return new Sindbad(this); + } +} +class SindbadEffect extends OneShotEffect { + + private static final FilterCard filter = new FilterLandCard(); + + public SindbadEffect() { + super(Outcome.DrawCard); + this.staticText = "Draw a card and reveal it. If it isn't a land card, discard it"; + } + + public SindbadEffect(final SindbadEffect effect) { + super(effect); + } + + @Override + public SindbadEffect copy() { + return new SindbadEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + Card card = controller.getLibrary().getFromTop(game); + controller.drawCards(1, game); + controller.revealCards("Sindbad", new CardsImpl(card), game); + if (!filter.match(card, game)) { + controller.discard(card, source, game); + } + return true; + } + return false; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/mastersedition/Oubliette.java b/Mage.Sets/src/mage/sets/mastersedition/Oubliette.java new file mode 100644 index 0000000000..48e20a6d61 --- /dev/null +++ b/Mage.Sets/src/mage/sets/mastersedition/Oubliette.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.mastersedition; + +import java.util.UUID; + +/** + * + * @author MarcoMarin + */ +public class Oubliette extends mage.sets.arabiannights.Oubliette { + + public Oubliette(UUID ownerId) { + super(ownerId); + this.cardNumber = 79; + this.expansionSetCode = "MED"; + } + + public Oubliette(final Oubliette card) { + super(card); + } + + @Override + public Oubliette copy() { + return new Oubliette(this); + } +} diff --git a/Mage.Sets/src/mage/sets/masterseditioniv/Cyclone.java b/Mage.Sets/src/mage/sets/masterseditioniv/Cyclone.java new file mode 100644 index 0000000000..b4892680c0 --- /dev/null +++ b/Mage.Sets/src/mage/sets/masterseditioniv/Cyclone.java @@ -0,0 +1,118 @@ +/* + * 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.masterseditioniv; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.TargetController; +import mage.counters.CounterType; +import mage.game.Game; +import mage.game.permanent.Permanent; + +import mage.players.Player; +import mage.abilities.costs.Cost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.DamageEverythingEffect; + + + +/** + * + * @author MarcoMarin + */ +public class Cyclone extends CardImpl { + + public Cyclone(UUID ownerId) { + super(ownerId, 148, "Cyclone", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}{G}"); + this.expansionSetCode = "ME4"; + + // At the beginning of your upkeep, put a wind counter on Cyclone, then sacrifice Cyclone unless you pay {G} for each wind counter on it. If you pay, Cyclone deals damage equal to the number of wind counters on it to each creature and each player. + Ability ability = new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.WIND.createInstance()), TargetController.YOU, false); + ability.addEffect(new CycloneEffect()); + this.addAbility(ability); + } + + public Cyclone(final Cyclone card) { + super(card); + } + + @Override + public Cyclone copy() { + return new Cyclone(this); + } +} +class CycloneEffect extends OneShotEffect { + + public CycloneEffect() { + super(Outcome.Damage); + this.staticText = "Pay Green Mana for each counter to damage everything or sacrifice Cyclone."; + } + + public CycloneEffect(final CycloneEffect effect) { + super(effect); + } + + @Override + public CycloneEffect copy() { + return new CycloneEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + Permanent permanent = game.getPermanent(source.getSourceId()); + int total = permanent.getCounters().getCount(CounterType.WIND); + + String greens = ""; + + for (int i=0; i < total; i++){ + greens+="{G}"; + } + + if(this.choice(game, source, player, new ManaCostsImpl(greens))){ + DamageEverythingEffect dmg = new DamageEverythingEffect(total); + dmg.apply(game, source); + } else { + permanent.sacrifice(source.getSourceId(), game); + } + return true; + } + + private boolean choice(Game game, Ability source, Player player, Cost counters) { + return counters.canPay(source, source.getSourceId(), player.getId(), game) + && player.chooseUse(Outcome.Damage, "Pay Cyclone's Upkeep?", source, game); + } + +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/masterseditioniv/SerendibDjinn.java b/Mage.Sets/src/mage/sets/masterseditioniv/SerendibDjinn.java new file mode 100644 index 0000000000..e70707b134 --- /dev/null +++ b/Mage.Sets/src/mage/sets/masterseditioniv/SerendibDjinn.java @@ -0,0 +1,134 @@ +/* + * 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.masterseditioniv; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; +import mage.abilities.common.ControlsPermanentsControllerTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.SacrificeSourceEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.TargetController; +import mage.constants.Zone; +import mage.filter.Filter; +import mage.filter.common.FilterControlledLandPermanent; +import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.permanent.AnotherPredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.Target; +import mage.target.common.TargetControlledPermanent; + + + +/** + * + * @author MarcoMarin + */ +public class SerendibDjinn extends CardImpl { + + public SerendibDjinn(UUID ownerId) { + super(ownerId, 61, "Serendib Djinn", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{U}{U}"); + this.expansionSetCode = "ME4"; + this.subtype.add("Djinn"); + this.power = new MageInt(5); + this.toughness = new MageInt(6); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + // At the beginning of your upkeep, sacrifice a land. If you sacrifice an Island this way, Serendib Djinn deals 3 damage to you. + this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SerendibDjinnEffect(), TargetController.YOU, false)); + // When you control no lands, sacrifice Serendib Djinn. + this.addAbility(new ControlsPermanentsControllerTriggeredAbility( + new FilterLandPermanent(), Filter.ComparisonType.Equal, 0, + new SacrificeSourceEffect())); + } + + public SerendibDjinn(final SerendibDjinn card) { + super(card); + } + + @Override + public SerendibDjinn copy() { + return new SerendibDjinn(this); + } +} +class SerendibDjinnEffect extends OneShotEffect { + + public SerendibDjinnEffect() { + super(Outcome.Damage); + this.staticText = "Sacrifice a Land. If it is an Island {this} deals 3 damage to you."; + } + + public SerendibDjinnEffect(final SerendibDjinnEffect effect) { + super(effect); + } + + @Override + public SerendibDjinnEffect copy() { + return new SerendibDjinnEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + Permanent sourcePermanent = game.getPermanent(source.getSourceId()); + if (sourcePermanent == null) { + sourcePermanent = (Permanent) game.getLastKnownInformation(source.getSourceId(), Zone.BATTLEFIELD); + } + if (player == null || sourcePermanent == null) { + return false; + } + + FilterControlledLandPermanent filter = new FilterControlledLandPermanent("Controlled Land"); + filter.add(new AnotherPredicate()); + + Target target = new TargetControlledPermanent(1, 1, filter, true); + + if (target.canChoose(source.getSourceId(), player.getId(), game)) { + player.choose(Outcome.Sacrifice, target, source.getSourceId(), game); + Permanent permanent = game.getPermanent(target.getFirstTarget()); + if (permanent != null) { + permanent.sacrifice(source.getSourceId(), game); + return true; + } + if (permanent.hasSubtype("Island")){ + player.damage(3, source.getSourceId(), game, false, true); + return true; + } + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/timeshifted/Sindbad.java b/Mage.Sets/src/mage/sets/timeshifted/Sindbad.java new file mode 100644 index 0000000000..2785eb07c1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/timeshifted/Sindbad.java @@ -0,0 +1,54 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.timeshifted; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author MarcoMarin + */ +public class Sindbad extends mage.sets.fourthedition.Sindbad { + + public Sindbad(UUID ownerId) { + super(ownerId); + this.cardNumber = 31; + this.expansionSetCode = "TSB"; + this.rarity = Rarity.SPECIAL; + } + + public Sindbad(final Sindbad card) { + super(card); + } + + @Override + public Sindbad copy() { + return new Sindbad(this); + } +}