diff --git a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java
index 21855c3cfb..130d16b8d8 100644
--- a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java
+++ b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java
@@ -299,7 +299,7 @@ public class HumanPlayer extends PlayerImpl {
return true;
}
}
- } else if (target.canTarget(response.getUUID(), source, game)) {
+ } else if (target.canTarget(response.getUUID(), playerId, source, game)) {
target.addTarget(response.getUUID(), source, game);
if(target.doneChosing()){
return true;
@@ -875,7 +875,7 @@ public class HumanPlayer extends PlayerImpl {
return true;
}
// if ability has no mana costs you have to pick it from ability picker
- return !ability.getManaCostsToPay().isEmpty();
+ return false;
}
return true;
}
diff --git a/Mage.Sets/src/mage/sets/arabiannights/ErhnamDjinn.java b/Mage.Sets/src/mage/sets/arabiannights/ErhnamDjinn.java
new file mode 100644
index 0000000000..bd288617f7
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/arabiannights/ErhnamDjinn.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 LevelX2
+ */
+public class ErhnamDjinn extends mage.sets.judgment.ErhnamDjinn {
+
+ public ErhnamDjinn(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 32;
+ this.expansionSetCode = "ARN";
+ }
+
+ public ErhnamDjinn(final ErhnamDjinn card) {
+ super(card);
+ }
+
+ @Override
+ public ErhnamDjinn copy() {
+ return new ErhnamDjinn(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/commander/SymbioticWurm.java b/Mage.Sets/src/mage/sets/commander/SymbioticWurm.java
new file mode 100644
index 0000000000..dbd84e28c2
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/commander/SymbioticWurm.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.commander;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class SymbioticWurm extends mage.sets.onslaught.SymbioticWurm {
+
+ public SymbioticWurm(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 174;
+ this.expansionSetCode = "CMD";
+ }
+
+ public SymbioticWurm(final SymbioticWurm card) {
+ super(card);
+ }
+
+ @Override
+ public SymbioticWurm copy() {
+ return new SymbioticWurm(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/commander/YavimayaElder.java b/Mage.Sets/src/mage/sets/commander/YavimayaElder.java
new file mode 100644
index 0000000000..bbb5b509d7
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/commander/YavimayaElder.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.commander;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.DiesTriggeredAbility;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterBasicLandCard;
+import mage.target.common.TargetCardInLibrary;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class YavimayaElder extends CardImpl {
+
+ public YavimayaElder(UUID ownerId) {
+ super(ownerId, 179, "Yavimaya Elder", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{G}{G}");
+ this.expansionSetCode = "CMD";
+ this.subtype.add("Human");
+ this.subtype.add("Druid");
+
+ this.color.setGreen(true);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(1);
+
+ // When Yavimaya Elder dies, you may search your library for up to two basic land cards, reveal them, and put them into your hand. If you do, shuffle your library.
+ this.addAbility(new DiesTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 2, new FilterBasicLandCard()), true), true));
+ // {2}, Sacrifice Yavimaya Elder: Draw a card.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new GenericManaCost(2));
+ ability.addCost(new SacrificeSourceCost());
+ this.addAbility(ability);
+ }
+
+ public YavimayaElder(final YavimayaElder card) {
+ super(card);
+ }
+
+ @Override
+ public YavimayaElder copy() {
+ return new YavimayaElder(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/conspiracy/Provoke.java b/Mage.Sets/src/mage/sets/conspiracy/Provoke.java
new file mode 100644
index 0000000000..9c608de68b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/conspiracy/Provoke.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 LevelX2
+ */
+public class Provoke extends mage.sets.stronghold.Provoke {
+
+ public Provoke(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 174;
+ this.expansionSetCode = "CNS";
+ }
+
+ public Provoke(final Provoke card) {
+ super(card);
+ }
+
+ @Override
+ public Provoke copy() {
+ return new Provoke(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/gatecrash/NightveilSpecter.java b/Mage.Sets/src/mage/sets/gatecrash/NightveilSpecter.java
index 1558b9037d..03f94f451f 100644
--- a/Mage.Sets/src/mage/sets/gatecrash/NightveilSpecter.java
+++ b/Mage.Sets/src/mage/sets/gatecrash/NightveilSpecter.java
@@ -29,6 +29,7 @@ package mage.sets.gatecrash;
import java.util.UUID;
import mage.MageInt;
+import mage.MageObject;
import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToAPlayerTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
@@ -110,9 +111,9 @@ class NightveilSpecterExileEffect extends OneShotEffect {
Player player = game.getPlayer(targetPointer.getFirst(game, source));
if (player != null) {
Card card = player.getLibrary().removeFromTop(game);
- Card sourceCard = game.getCard(source.getSourceId());
- if (card != null && sourceCard != null) {
- return card.moveToExile(CardUtil.getCardExileZoneId(game, source), sourceCard.getName(), source.getSourceId(), game);
+ MageObject sourceObject = game.getObject(source.getSourceId());
+ if (card != null && sourceObject != null) {
+ player.moveCardToExileWithInfo(card, CardUtil.getCardExileZoneId(game, source), sourceObject.getLogName(), source.getSourceId(), game, Zone.LIBRARY);
}
}
return false;
diff --git a/Mage.Sets/src/mage/sets/invasion/Tangle.java b/Mage.Sets/src/mage/sets/invasion/Tangle.java
new file mode 100644
index 0000000000..8ed0ee5d76
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/invasion/Tangle.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.invasion;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.ContinuousEffect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.PreventAllDamageByAllEffect;
+import mage.abilities.effects.common.SkipNextUntapTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.AttackingPredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.targetpointer.FixedTarget;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class Tangle extends CardImpl {
+
+ public Tangle(UUID ownerId) {
+ super(ownerId, 213, "Tangle", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{1}{G}");
+ this.expansionSetCode = "INV";
+
+ this.color.setGreen(true);
+
+ // Prevent all combat damage that would be dealt this turn.
+ this.getSpellAbility().addEffect(new PreventAllDamageByAllEffect(Duration.EndOfTurn, true));
+ // Each attacking creature doesn't untap during its controller's next untap step.
+ this.getSpellAbility().addEffect(new TangleEffect());
+ }
+
+ public Tangle(final Tangle card) {
+ super(card);
+ }
+
+ @Override
+ public Tangle copy() {
+ return new Tangle(this);
+ }
+
+}
+
+class TangleEffect extends OneShotEffect {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("attacking creature");
+
+ static {
+ filter.add(new AttackingPredicate());
+ }
+
+ public TangleEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "Each attacking creature doesn't untap during its controller's next untap step";
+ }
+
+ public TangleEffect(final TangleEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public TangleEffect copy() {
+ return new TangleEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ for (Permanent permanent :game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) {
+ ContinuousEffect effect = new SkipNextUntapTargetEffect();
+ effect.setTargetPointer(new FixedTarget(permanent.getId()));
+ game.addEffect(effect, source);
+ }
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/judgment/ErhnamDjinn.java b/Mage.Sets/src/mage/sets/judgment/ErhnamDjinn.java
new file mode 100644
index 0000000000..ff2ba87ab6
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/judgment/ErhnamDjinn.java
@@ -0,0 +1,88 @@
+/*
+ * 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.judgment;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.BeginningOfUntapTriggeredAbility;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.continious.GainAbilityTargetEffect;
+import mage.abilities.keyword.ForestwalkAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.PhaseStep;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.filter.predicate.permanent.ControllerPredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class ErhnamDjinn extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("non-Wall creature an opponent controls");
+
+ static {
+ filter.add(Predicates.not(new SubtypePredicate("Wall")));
+ filter.add(new ControllerPredicate(TargetController.OPPONENT));
+ }
+
+ public ErhnamDjinn(UUID ownerId) {
+ super(ownerId, 113, "Erhnam Djinn", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{G}");
+ this.expansionSetCode = "JUD";
+ this.subtype.add("Djinn");
+
+ this.color.setGreen(true);
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(5);
+
+ // At the beginning of your upkeep, target non-Wall creature an opponent controls gains forestwalk until your next upkeep.
+ GainAbilityTargetEffect effect = new GainAbilityTargetEffect(new ForestwalkAbility(), Duration.Custom,
+ "target non-Wall creature an opponent controls gains forestwalk until your next upkeep");
+ effect.setDurationToPhase(PhaseStep.UPKEEP);
+ Ability ability = new BeginningOfUntapTriggeredAbility(effect, TargetController.YOU, false);
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public ErhnamDjinn(final ErhnamDjinn card) {
+ super(card);
+ }
+
+ @Override
+ public ErhnamDjinn copy() {
+ return new ErhnamDjinn(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/judgment/GrizzlyFate.java b/Mage.Sets/src/mage/sets/judgment/GrizzlyFate.java
new file mode 100644
index 0000000000..5339f86b8f
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/judgment/GrizzlyFate.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.judgment;
+
+import java.util.UUID;
+import mage.abilities.condition.common.CardsInControllerGraveCondition;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.decorator.ConditionalOneShotEffect;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.CreateTokenEffect;
+import mage.abilities.keyword.FlashbackAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.TimingRule;
+import mage.game.permanent.token.BearToken;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class GrizzlyFate extends CardImpl {
+
+ public GrizzlyFate(UUID ownerId) {
+ super(ownerId, 119, "Grizzly Fate", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{3}{G}{G}");
+ this.expansionSetCode = "JUD";
+
+ this.color.setGreen(true);
+
+ // Put two 2/2 green Bear creature tokens onto the battlefield.
+ // Threshold - Put four 2/2 green Bear creature tokens onto the battlefield instead if seven or more cards are in your graveyard.
+ Effect effect = new ConditionalOneShotEffect(new CreateTokenEffect(new BearToken(), 4),
+ new CreateTokenEffect(new BearToken(), 2),
+ new CardsInControllerGraveCondition(7),
+ "Put two 2/2 green Bear creature tokens onto the battlefield.
Threshold - Put four 2/2 green Bear creature tokens onto the battlefield instead if seven or more cards are in your graveyard.");
+ this.getSpellAbility().addEffect(effect);
+ // Flashback {5}{G}{G}
+ this.addAbility(new FlashbackAbility(new ManaCostsImpl("{5}{G}{G}"), TimingRule.SORCERY));
+ }
+
+ public GrizzlyFate(final GrizzlyFate card) {
+ super(card);
+ }
+
+ @Override
+ public GrizzlyFate copy() {
+ return new GrizzlyFate(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/judgment/SuddenStrength.java b/Mage.Sets/src/mage/sets/judgment/SuddenStrength.java
new file mode 100644
index 0000000000..becaf295e9
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/judgment/SuddenStrength.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.judgment;
+
+import java.util.UUID;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.continious.BoostTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class SuddenStrength extends CardImpl {
+
+ public SuddenStrength(UUID ownerId) {
+ super(ownerId, 132, "Sudden Strength", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{3}{G}");
+ this.expansionSetCode = "JUD";
+
+ this.color.setGreen(true);
+
+ // Target creature gets +3/+3 until end of turn.
+ this.getSpellAbility().addEffect(new BoostTargetEffect(3,3,Duration.EndOfTurn));
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent());
+ // Draw a card.
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ }
+
+ public SuddenStrength(final SuddenStrength card) {
+ super(card);
+ }
+
+ @Override
+ public SuddenStrength copy() {
+ return new SuddenStrength(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/judgment/WorldgorgerDragon.java b/Mage.Sets/src/mage/sets/judgment/WorldgorgerDragon.java
new file mode 100644
index 0000000000..b640adc502
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/judgment/WorldgorgerDragon.java
@@ -0,0 +1,169 @@
+/*
+ * 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.judgment;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.common.LeavesBattlefieldTriggeredAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.abilities.keyword.TrampleAbility;
+import mage.cards.Card;
+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.FilterPermanent;
+import mage.filter.predicate.permanent.AnotherPredicate;
+import mage.filter.predicate.permanent.ControllerPredicate;
+import mage.game.ExileZone;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.util.CardUtil;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class WorldgorgerDragon extends CardImpl {
+
+ public WorldgorgerDragon(UUID ownerId) {
+ super(ownerId, 103, "Worldgorger Dragon", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{R}{R}{R}");
+ this.expansionSetCode = "JUD";
+ this.subtype.add("Nightmare");
+ this.subtype.add("Dragon");
+
+ this.color.setRed(true);
+ this.power = new MageInt(7);
+ this.toughness = new MageInt(7);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+ // Trample
+ this.addAbility(TrampleAbility.getInstance());
+ // When Worldgorger Dragon enters the battlefield, exile all other permanents you control.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new WorldgorgerDragonEntersEffect(), false));
+
+ // When Worldgorger Dragon leaves the battlefield, return the exiled cards to the battlefield under their owners' control.
+ this.addAbility(new LeavesBattlefieldTriggeredAbility(new WorldgorgerDragonLeavesEffect(), false));
+ }
+
+ public WorldgorgerDragon(final WorldgorgerDragon card) {
+ super(card);
+ }
+
+ @Override
+ public WorldgorgerDragon copy() {
+ return new WorldgorgerDragon(this);
+ }
+}
+
+class WorldgorgerDragonEntersEffect extends OneShotEffect {
+
+ private static final FilterPermanent filter = new FilterPermanent("all other permanents you control");
+
+ static {
+ filter.add(new ControllerPredicate(TargetController.YOU));
+ }
+
+ public WorldgorgerDragonEntersEffect() {
+ super(Outcome.Detriment);
+ staticText = "exile all other permanents you control";
+ }
+
+ public WorldgorgerDragonEntersEffect(final WorldgorgerDragonEntersEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ MageObject sourceObject = game.getObject(source.getSourceId());
+ if (controller != null) {
+ UUID exileId = CardUtil.getCardExileZoneId(game, source);
+ if (exileId != null) {
+ for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) {
+ if (!permanent.getId().equals(source.getSourceId())) { // Another
+ controller.moveCardToExileWithInfo(permanent, exileId, sourceObject.getLogName(), source.getSourceId(), game, Zone.BATTLEFIELD);
+ }
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public WorldgorgerDragonEntersEffect copy() {
+ return new WorldgorgerDragonEntersEffect(this);
+ }
+}
+
+class WorldgorgerDragonLeavesEffect extends OneShotEffect {
+
+ public WorldgorgerDragonLeavesEffect() {
+ super(Outcome.Neutral);
+ staticText = "return the exiled cards to the battlefield under their owners' control";
+ }
+
+ public WorldgorgerDragonLeavesEffect(final WorldgorgerDragonLeavesEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ UUID exileId = source.getSourceId();
+ ExileZone exile = game.getExile().getExileZone(CardUtil.getCardExileZoneId(game, source));
+ if (exile != null) {
+ exile = exile.copy();
+ for (UUID cardId : exile) {
+ Card card = game.getCard(cardId);
+ if (card != null) {
+ controller.putOntoBattlefieldWithInfo(card, game, Zone.EXILED, source.getSourceId());
+ }
+ }
+ return true;
+ }
+ }
+ return false;
+
+ }
+
+ @Override
+ public WorldgorgerDragonLeavesEffect copy() {
+ return new WorldgorgerDragonLeavesEffect(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/legends/Eureka.java b/Mage.Sets/src/mage/sets/legends/Eureka.java
new file mode 100644
index 0000000000..a596833b6a
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/legends/Eureka.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.legends;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class Eureka extends mage.sets.vintagemasters.Eureka {
+
+ public Eureka(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 99;
+ this.expansionSetCode = "LEG";
+ this.rarity = Rarity.RARE;
+ }
+
+ public Eureka(final Eureka card) {
+ super(card);
+ }
+
+ @Override
+ public Eureka copy() {
+ return new Eureka(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/legions/KrosanVorine.java b/Mage.Sets/src/mage/sets/legions/KrosanVorine.java
new file mode 100644
index 0000000000..86e2d61744
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/legions/KrosanVorine.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.legions;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class KrosanVorine extends mage.sets.vintagemasters.KrosanVorine {
+
+ public KrosanVorine(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 131;
+ this.expansionSetCode = "LGN";
+ }
+
+ public KrosanVorine(final KrosanVorine card) {
+ super(card);
+ }
+
+ @Override
+ public KrosanVorine copy() {
+ return new KrosanVorine(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/onslaught/LightningRift.java b/Mage.Sets/src/mage/sets/onslaught/LightningRift.java
new file mode 100644
index 0000000000..c2670a0d1b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/onslaught/LightningRift.java
@@ -0,0 +1,67 @@
+/*
+ * 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.onslaught;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.CycleAllTriggeredAbility;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.abilities.effects.common.DoIfCostPaid;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class LightningRift extends CardImpl {
+
+ public LightningRift(UUID ownerId) {
+ super(ownerId, 217, "Lightning Rift", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}");
+ this.expansionSetCode = "ONS";
+
+ this.color.setRed(true);
+
+ // Whenever a player cycles a card, you may pay {1}. If you do, Lightning Rift deals 2 damage to target creature or player.
+ Ability ability = new CycleAllTriggeredAbility(new DoIfCostPaid(new DamageTargetEffect(2), new GenericManaCost(1)), false);
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public LightningRift(final LightningRift card) {
+ super(card);
+ }
+
+ @Override
+ public LightningRift copy() {
+ return new LightningRift(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/onslaught/SilvosRogueElemental.java b/Mage.Sets/src/mage/sets/onslaught/SilvosRogueElemental.java
new file mode 100644
index 0000000000..63d009b92e
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/onslaught/SilvosRogueElemental.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.onslaught;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.RegenerateSourceEffect;
+import mage.abilities.keyword.TrampleAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class SilvosRogueElemental extends CardImpl {
+
+ public SilvosRogueElemental(UUID ownerId) {
+ super(ownerId, 282, "Silvos, Rogue Elemental", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{G}{G}{G}");
+ this.expansionSetCode = "ONS";
+ this.supertype.add("Legendary");
+ this.subtype.add("Elemental");
+
+ this.color.setGreen(true);
+ this.power = new MageInt(8);
+ this.toughness = new MageInt(5);
+
+ // Trample
+ this.addAbility(TrampleAbility.getInstance());
+ // {G}: Regenerate Silvos, Rogue Elemental.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{G}")));
+ }
+
+ public SilvosRogueElemental(final SilvosRogueElemental card) {
+ super(card);
+ }
+
+ @Override
+ public SilvosRogueElemental copy() {
+ return new SilvosRogueElemental(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/onslaught/SolarBlast.java b/Mage.Sets/src/mage/sets/onslaught/SolarBlast.java
new file mode 100644
index 0000000000..728ae57811
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/onslaught/SolarBlast.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.onslaught;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.CycleTriggeredAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.abilities.keyword.CyclingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class SolarBlast extends CardImpl {
+
+ public SolarBlast(UUID ownerId) {
+ super(ownerId, 234, "Solar Blast", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{3}{R}");
+ this.expansionSetCode = "ONS";
+
+ this.color.setRed(true);
+
+ // Solar Blast deals 3 damage to target creature or player.
+ this.getSpellAbility().addEffect(new DamageTargetEffect(3));
+ this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
+ // Cycling {1}{R}{R}
+ this.addAbility(new CyclingAbility(new ManaCostsImpl("{1}{R}{R}")));
+ // When you cycle Solar Blast, you may have it deal 1 damage to target creature or player.
+ Ability ability = new CycleTriggeredAbility(new DamageTargetEffect(1), true);
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public SolarBlast(final SolarBlast card) {
+ super(card);
+ }
+
+ @Override
+ public SolarBlast copy() {
+ return new SolarBlast(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/onslaught/SymbioticWurm.java b/Mage.Sets/src/mage/sets/onslaught/SymbioticWurm.java
new file mode 100644
index 0000000000..3e5d051879
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/onslaught/SymbioticWurm.java
@@ -0,0 +1,67 @@
+/*
+ * 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.onslaught;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.DiesTriggeredAbility;
+import mage.abilities.effects.common.CreateTokenEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.game.permanent.token.InsectToken;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class SymbioticWurm extends CardImpl {
+
+ public SymbioticWurm(UUID ownerId) {
+ super(ownerId, 289, "Symbiotic Wurm", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{5}{G}{G}{G}");
+ this.expansionSetCode = "ONS";
+ this.subtype.add("Wurm");
+
+ this.color.setGreen(true);
+ this.power = new MageInt(7);
+ this.toughness = new MageInt(7);
+
+ // When Symbiotic Wurm dies, put seven 1/1 green Insect creature tokens onto the battlefield.
+ this.addAbility(new DiesTriggeredAbility(new CreateTokenEffect(new InsectToken(), 7)));
+
+ }
+
+ public SymbioticWurm(final SymbioticWurm card) {
+ super(card);
+ }
+
+ @Override
+ public SymbioticWurm copy() {
+ return new SymbioticWurm(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/ShivanWurm.java b/Mage.Sets/src/mage/sets/planeshift/ShivanWurm.java
new file mode 100644
index 0000000000..490e382531
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/ShivanWurm.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.planeshift;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class ShivanWurm extends mage.sets.vintagemasters.ShivanWurm {
+
+ public ShivanWurm(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 124;
+ this.expansionSetCode = "PLS";
+ }
+
+ public ShivanWurm(final ShivanWurm card) {
+ super(card);
+ }
+
+ @Override
+ public ShivanWurm copy() {
+ return new ShivanWurm(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portal/HulkingGoblin.java b/Mage.Sets/src/mage/sets/portal/HulkingGoblin.java
new file mode 100644
index 0000000000..251ef19f7b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portal/HulkingGoblin.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.portal;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class HulkingGoblin extends mage.sets.vintagemasters.HulkingGoblin {
+
+ public HulkingGoblin(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 140;
+ this.expansionSetCode = "POR";
+ }
+
+ public HulkingGoblin(final HulkingGoblin card) {
+ super(card);
+ }
+
+ @Override
+ public HulkingGoblin copy() {
+ return new HulkingGoblin(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portal/PillagingHorde.java b/Mage.Sets/src/mage/sets/portal/PillagingHorde.java
new file mode 100644
index 0000000000..be5b60c862
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portal/PillagingHorde.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.portal;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class PillagingHorde extends mage.sets.vintagemasters.PillagingHorde {
+
+ public PillagingHorde(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 147;
+ this.expansionSetCode = "POR";
+ this.rarity = Rarity.RARE;
+ }
+
+ public PillagingHorde(final PillagingHorde card) {
+ super(card);
+ }
+
+ @Override
+ public PillagingHorde copy() {
+ return new PillagingHorde(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalsecondage/GoblinGeneral.java b/Mage.Sets/src/mage/sets/portalsecondage/GoblinGeneral.java
new file mode 100644
index 0000000000..cacb3dc767
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalsecondage/GoblinGeneral.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.portalsecondage;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class GoblinGeneral extends mage.sets.vintagemasters.GoblinGeneral {
+
+ public GoblinGeneral(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 97;
+ this.expansionSetCode = "PO2";
+ this.rarity = Rarity.RARE;
+ }
+
+ public GoblinGeneral(final GoblinGeneral card) {
+ super(card);
+ }
+
+ @Override
+ public GoblinGeneral copy() {
+ return new GoblinGeneral(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/CarrionCall.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/CarrionCall.java
index be199f6502..d1369d1abf 100644
--- a/Mage.Sets/src/mage/sets/scarsofmirrodin/CarrionCall.java
+++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/CarrionCall.java
@@ -29,14 +29,11 @@
package mage.sets.scarsofmirrodin;
import java.util.UUID;
+import mage.abilities.effects.common.CreateTokenEffect;
+import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
-import mage.MageInt;
-import mage.ObjectColor;
-import mage.abilities.effects.common.CreateTokenEffect;
-import mage.abilities.keyword.InfectAbility;
-import mage.cards.CardImpl;
-import mage.game.permanent.token.Token;
+import mage.game.permanent.token.InsectToken;
/**
*
@@ -48,7 +45,7 @@ public class CarrionCall extends CardImpl {
super(ownerId, 115, "Carrion Call", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{3}{G}");
this.expansionSetCode = "SOM";
this.color.setGreen(true);
- this.getSpellAbility().addEffect(new CreateTokenEffect(new InsectToken(), 2));
+ this.getSpellAbility().addEffect(new CreateTokenEffect(new InsectToken("SOM"), 2));
}
public CarrionCall (final CarrionCall card) {
@@ -60,16 +57,3 @@ public class CarrionCall extends CardImpl {
return new CarrionCall(this);
}
}
-
-class InsectToken extends Token {
-
- public InsectToken() {
- super("Insect", "1/1 green Insect creature tokens with infect");
- cardType.add(CardType.CREATURE);
- color = ObjectColor.GREEN;
- subtype.add("Insect");
- power = new MageInt(1);
- toughness = new MageInt(1);
- this.addAbility(InfectAbility.getInstance());
- }
-}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/scourge/ClawsOfWirewood.java b/Mage.Sets/src/mage/sets/scourge/ClawsOfWirewood.java
new file mode 100644
index 0000000000..97e5bd337c
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/scourge/ClawsOfWirewood.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.scourge;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class ClawsOfWirewood extends mage.sets.vintagemasters.ClawsOfWirewood {
+
+ public ClawsOfWirewood(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 114;
+ this.expansionSetCode = "SCG";
+ this.rarity = Rarity.UNCOMMON;
+ }
+
+ public ClawsOfWirewood(final ClawsOfWirewood card) {
+ super(card);
+ }
+
+ @Override
+ public ClawsOfWirewood copy() {
+ return new ClawsOfWirewood(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/scourge/SparkSpray.java b/Mage.Sets/src/mage/sets/scourge/SparkSpray.java
new file mode 100644
index 0000000000..ee8ed4c2d2
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/scourge/SparkSpray.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.scourge;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class SparkSpray extends mage.sets.vintagemasters.SparkSpray {
+
+ public SparkSpray(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 105;
+ this.expansionSetCode = "SCG";
+ }
+
+ public SparkSpray(final SparkSpray card) {
+ super(card);
+ }
+
+ @Override
+ public SparkSpray copy() {
+ return new SparkSpray(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/stronghold/FlowstoneHellion.java b/Mage.Sets/src/mage/sets/stronghold/FlowstoneHellion.java
new file mode 100644
index 0000000000..d9145f3f72
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/stronghold/FlowstoneHellion.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.stronghold;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.common.continious.BoostSourceEffect;
+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;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class FlowstoneHellion extends CardImpl {
+
+ public FlowstoneHellion(UUID ownerId) {
+ super(ownerId, 84, "Flowstone Hellion", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{4}{R}");
+ this.expansionSetCode = "STH";
+ this.subtype.add("Hellion");
+ this.subtype.add("Beast");
+
+ this.color.setRed(true);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // Haste
+ this.addAbility(HasteAbility.getInstance());
+ // {0}: Flowstone Hellion gets +1/-1 until end of turn.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(+1,-1,Duration.EndOfTurn), new GenericManaCost(0)));
+ }
+
+ public FlowstoneHellion(final FlowstoneHellion card) {
+ super(card);
+ }
+
+ @Override
+ public FlowstoneHellion copy() {
+ return new FlowstoneHellion(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/stronghold/HermitDruid.java b/Mage.Sets/src/mage/sets/stronghold/HermitDruid.java
new file mode 100644
index 0000000000..ca1b11557a
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/stronghold/HermitDruid.java
@@ -0,0 +1,139 @@
+/*
+ * 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.stronghold;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.cards.CardsImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.Filter;
+import mage.filter.common.FilterBasicLandCard;
+import mage.game.Game;
+import mage.players.Library;
+import mage.players.Player;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class HermitDruid extends CardImpl {
+
+ public HermitDruid(UUID ownerId) {
+ super(ownerId, 58, "Hermit Druid", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{G}");
+ this.expansionSetCode = "STH";
+ this.subtype.add("Human");
+ this.subtype.add("Druid");
+
+ this.color.setGreen(true);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {G}, {tap}: Reveal cards from the top of your library until you reveal a basic land card. Put that card into your hand and all other cards revealed this way into your graveyard.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new HermitDruidEffect(), new ManaCostsImpl("{G}"));
+ ability.addCost(new TapSourceCost());
+ this.addAbility(ability);
+
+
+ }
+
+ public HermitDruid(final HermitDruid card) {
+ super(card);
+ }
+
+ @Override
+ public HermitDruid copy() {
+ return new HermitDruid(this);
+ }
+}
+
+class HermitDruidEffect extends OneShotEffect {
+
+ public HermitDruidEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "Reveal cards from the top of your library until you reveal a basic land card. Put that card into your hand and all other cards revealed this way into your graveyard";
+ }
+
+ public HermitDruidEffect(final HermitDruidEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public HermitDruidEffect copy() {
+ return new HermitDruidEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(source.getControllerId());
+ MageObject sourceObject= game.getObject(source.getSourceId());
+ if (player != null) {
+
+ Library library = player.getLibrary();
+ if (library.size() < 1) {
+ return true;
+ }
+ CardsImpl cards = new CardsImpl();
+ Card card;
+ Filter filter = new FilterBasicLandCard();
+ do {
+ card = library.removeFromTop(game);
+ if (card != null) {
+
+ if (filter.match(card, game)) {
+ player.moveCardToHandWithInfo(card, source.getSourceId(), game, Zone.LIBRARY);
+ } else {
+ cards.add(card);
+ }
+ }
+ } while (library.size() > 0 && card != null && !filter.match(card, game));
+
+ if (!cards.isEmpty()) {
+ for (Card cardToGrave: cards.getCards(game)) {
+ player.moveCardToGraveyardWithInfo(cardToGrave, source.getSourceId(), game, Zone.LIBRARY);
+ }
+ if (card != null) {
+ cards.add(card);
+ }
+ player.revealCards(sourceObject.getLogName(), cards, game);
+ }
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/stronghold/Provoke.java b/Mage.Sets/src/mage/sets/stronghold/Provoke.java
new file mode 100644
index 0000000000..412a479c66
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/stronghold/Provoke.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.stronghold;
+
+import java.util.UUID;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.UntapTargetEffect;
+import mage.abilities.effects.common.combat.BlocksIfAbleTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.ControllerPredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class Provoke extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
+
+ static {
+ filter.add(new ControllerPredicate(TargetController.NOT_YOU));
+ }
+
+ public Provoke(UUID ownerId) {
+ super(ownerId, 63, "Provoke", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{G}");
+ this.expansionSetCode = "STH";
+
+ this.color.setGreen(true);
+
+ // Untap target creature you don't control. That creature blocks this turn if able.
+ this.getSpellAbility().addEffect(new UntapTargetEffect());
+ Effect effect = new BlocksIfAbleTargetEffect(Duration.EndOfTurn);
+ effect.setText("That creature blocks this turn if able");
+ this.getSpellAbility().addEffect(effect);
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
+ // Draw a card.
+ this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
+ }
+
+ public Provoke(final Provoke card) {
+ super(card);
+ }
+
+ @Override
+ public Provoke copy() {
+ return new Provoke(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/tempest/Kindle.java b/Mage.Sets/src/mage/sets/tempest/Kindle.java
new file mode 100644
index 0000000000..ee00d2480a
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/tempest/Kindle.java
@@ -0,0 +1,119 @@
+/*
+ * 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.tempest;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.dynamicvalue.DynamicValue;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.FilterCard;
+import mage.filter.predicate.mageobject.NamePredicate;
+import mage.game.Game;
+import mage.players.Player;
+import mage.players.PlayerList;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class Kindle extends CardImpl {
+
+ private static final FilterCard filter = new FilterCard("2 plus the number of cards named Kindle");
+
+ static {
+ filter.add(new NamePredicate("Kindle"));
+ }
+
+ public Kindle(UUID ownerId) {
+ super(ownerId, 184, "Kindle", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{R}");
+ this.expansionSetCode = "TMP";
+
+ this.color.setRed(true);
+
+ // Kindle deals X damage to target creature or player, where X is 2 plus the number of cards named Kindle in all graveyards.
+ Effect effect = new DamageTargetEffect(new KindleCardsInAllGraveyardsCount(filter));
+ effect.setText("{this} deals X damage to target creature or player, where X is 2 plus the number of cards named Kindle in all graveyards");
+ this.getSpellAbility().addEffect(effect);
+ this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
+ }
+
+ public Kindle(final Kindle card) {
+ super(card);
+ }
+
+ @Override
+ public Kindle copy() {
+ return new Kindle(this);
+ }
+}
+
+class KindleCardsInAllGraveyardsCount implements DynamicValue {
+
+ private final FilterCard filter;
+
+ public KindleCardsInAllGraveyardsCount(FilterCard filter) {
+ this.filter = filter;
+ }
+
+ private KindleCardsInAllGraveyardsCount(KindleCardsInAllGraveyardsCount dynamicValue) {
+ this.filter = dynamicValue.filter;
+ }
+
+ @Override
+ public int calculate(Game game, Ability sourceAbility) {
+ int amount = 0;
+ PlayerList playerList = game.getPlayerList();
+ for (UUID playerUUID : playerList) {
+ Player player = game.getPlayer(playerUUID);
+ if (player != null) {
+ amount += player.getGraveyard().count(filter, sourceAbility.getSourceId(), sourceAbility.getControllerId(), game);
+ }
+ }
+ return amount + 2;
+ }
+
+ @Override
+ public KindleCardsInAllGraveyardsCount copy() {
+ return new KindleCardsInAllGraveyardsCount(this);
+ }
+
+ @Override
+ public String toString() {
+ return "1";
+ }
+
+ @Override
+ public String getMessage() {
+ return filter.getMessage() + " in all graveyards";
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/tempest/WallOfDiffusion.java b/Mage.Sets/src/mage/sets/tempest/WallOfDiffusion.java
new file mode 100644
index 0000000000..3467a57600
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/tempest/WallOfDiffusion.java
@@ -0,0 +1,102 @@
+/*
+ * 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.tempest;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.AsThoughEffectImpl;
+import mage.abilities.keyword.DefenderAbility;
+import mage.cards.CardImpl;
+import mage.constants.AsThoughEffectType;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.game.Game;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class WallOfDiffusion extends CardImpl {
+
+ public WallOfDiffusion(UUID ownerId) {
+ super(ownerId, 211, "Wall of Diffusion", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{R}");
+ this.expansionSetCode = "TMP";
+ this.subtype.add("Wall");
+
+ this.color.setRed(true);
+ this.power = new MageInt(0);
+ this.toughness = new MageInt(5);
+
+ // Defender
+ this.addAbility(DefenderAbility.getInstance());
+ // Wall of Diffusion can block creatures with shadow as though Wall of Diffusion had shadow.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockAsThoughtIthadShadowEffect(Duration.WhileOnBattlefield)));
+ }
+
+ public WallOfDiffusion(final WallOfDiffusion card) {
+ super(card);
+ }
+
+ @Override
+ public WallOfDiffusion copy() {
+ return new WallOfDiffusion(this);
+ }
+}
+
+class CanBlockAsThoughtIthadShadowEffect extends AsThoughEffectImpl {
+
+ public CanBlockAsThoughtIthadShadowEffect(Duration duration) {
+ super(AsThoughEffectType.BLOCK_SHADOW, duration, Outcome.Benefit);
+ staticText = "{this} can block creatures with shadow as though {this} had shadow";
+ }
+
+ public CanBlockAsThoughtIthadShadowEffect(final CanBlockAsThoughtIthadShadowEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ return true;
+ }
+
+ @Override
+ public CanBlockAsThoughtIthadShadowEffect copy() {
+ return new CanBlockAsThoughtIthadShadowEffect(this);
+ }
+
+ @Override
+ public boolean applies(UUID sourceId, Ability source, Game game) {
+ return sourceId.equals(source.getSourceId());
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/urzasdestiny/YavimayaElder.java b/Mage.Sets/src/mage/sets/urzasdestiny/YavimayaElder.java
new file mode 100644
index 0000000000..1b477100a0
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/urzasdestiny/YavimayaElder.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.urzasdestiny;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class YavimayaElder extends mage.sets.commander.YavimayaElder {
+
+ public YavimayaElder(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 124;
+ this.expansionSetCode = "UDS";
+ }
+
+ public YavimayaElder(final YavimayaElder card) {
+ super(card);
+ }
+
+ @Override
+ public YavimayaElder copy() {
+ return new YavimayaElder(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/urzassaga/Falter.java b/Mage.Sets/src/mage/sets/urzassaga/Falter.java
new file mode 100644
index 0000000000..b437f98ebf
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/urzassaga/Falter.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.urzassaga;
+
+import java.util.UUID;
+import mage.abilities.effects.common.combat.CantBlockAllEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.AbilityPredicate;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class Falter extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures without flying");
+
+ static {
+ filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class)));
+ }
+
+ public Falter(UUID ownerId) {
+ super(ownerId, 184, "Falter", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{R}");
+ this.expansionSetCode = "USG";
+
+ this.color.setRed(true);
+
+ // Creatures without flying can't block this turn.
+ this.getSpellAbility().addEffect(new CantBlockAllEffect(filter, Duration.EndOfTurn));
+ }
+
+ public Falter(final Falter card) {
+ super(card);
+ }
+
+ @Override
+ public Falter copy() {
+ return new Falter(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/urzassaga/Gamble.java b/Mage.Sets/src/mage/sets/urzassaga/Gamble.java
new file mode 100644
index 0000000000..9a2ee3b0b6
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/urzassaga/Gamble.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.urzassaga;
+
+import java.util.UUID;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.discard.DiscardControllerEffect;
+import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.target.common.TargetCardInLibrary;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class Gamble extends CardImpl {
+
+ public Gamble(UUID ownerId) {
+ super(ownerId, 188, "Gamble", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{R}");
+ this.expansionSetCode = "USG";
+
+ this.color.setRed(true);
+
+ // Search your library for a card, put that card into your hand, discard a card at random, then shuffle your library.
+ Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(), false, true);
+ effect.setText("Search your library for a card, put that card into your hand");
+ this.getSpellAbility().addEffect(effect);
+ effect = new DiscardControllerEffect(1, true);
+ effect.setText(", discard a card at random, then shuffle your library");
+ this.getSpellAbility().addEffect(effect);
+
+ }
+
+ public Gamble(final Gamble card) {
+ super(card);
+ }
+
+ @Override
+ public Gamble copy() {
+ return new Gamble(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/ClawsOfWirewood.java b/Mage.Sets/src/mage/sets/vintagemasters/ClawsOfWirewood.java
new file mode 100644
index 0000000000..d8b750f943
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/ClawsOfWirewood.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.vintagemasters;
+
+import java.util.UUID;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.DamageAllEffect;
+import mage.abilities.effects.common.DamagePlayersEffect;
+import mage.abilities.keyword.CyclingAbility;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.AbilityPredicate;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class ClawsOfWirewood extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
+
+ static {
+ filter.add(new AbilityPredicate(FlyingAbility.class));
+ }
+
+ public ClawsOfWirewood(UUID ownerId) {
+ super(ownerId, 201, "Claws of Wirewood", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{3}{G}");
+ this.expansionSetCode = "VMA";
+
+ this.color.setGreen(true);
+
+ // Claws of Wirewood deals 3 damage to each creature with flying and each player.
+ this.getSpellAbility().addEffect(new DamageAllEffect(3, filter));
+ Effect effect = new DamagePlayersEffect(3);
+ effect.setText("and each player");
+ this.getSpellAbility().addEffect(effect);
+ // Cycling {2}
+ this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}")));
+ }
+
+ public ClawsOfWirewood(final ClawsOfWirewood card) {
+ super(card);
+ }
+
+ @Override
+ public ClawsOfWirewood copy() {
+ return new ClawsOfWirewood(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/ErhnamDjinn.java b/Mage.Sets/src/mage/sets/vintagemasters/ErhnamDjinn.java
new file mode 100644
index 0000000000..839f960a93
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/ErhnamDjinn.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.vintagemasters;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class ErhnamDjinn extends mage.sets.judgment.ErhnamDjinn {
+
+ public ErhnamDjinn(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 207;
+ this.expansionSetCode = "VMA";
+ this.rarity = Rarity.UNCOMMON;
+ }
+
+ public ErhnamDjinn(final ErhnamDjinn card) {
+ super(card);
+ }
+
+ @Override
+ public ErhnamDjinn copy() {
+ return new ErhnamDjinn(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/Eureka.java b/Mage.Sets/src/mage/sets/vintagemasters/Eureka.java
new file mode 100644
index 0000000000..f1fc1c8614
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/Eureka.java
@@ -0,0 +1,130 @@
+/*
+ * 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.vintagemasters;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterPermanentCard;
+import mage.game.Game;
+import mage.players.Player;
+import mage.players.PlayerList;
+import mage.target.Target;
+import mage.target.common.TargetCardInHand;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class Eureka extends CardImpl {
+
+ public Eureka(UUID ownerId) {
+ super(ownerId, 208, "Eureka", Rarity.MYTHIC, new CardType[]{CardType.SORCERY}, "{2}{G}{G}");
+ this.expansionSetCode = "VMA";
+
+ this.color.setGreen(true);
+
+ // Starting with you, each player may put a permanent card from his or her hand onto the battlefield. Repeat this process until no one puts a card onto the battlefield.
+ this.getSpellAbility().addEffect(new EurekaEffect());
+ }
+
+ public Eureka(final Eureka card) {
+ super(card);
+ }
+
+ @Override
+ public Eureka copy() {
+ return new Eureka(this);
+ }
+}
+
+class EurekaEffect extends OneShotEffect {
+
+ public EurekaEffect() {
+ super(Outcome.PutCardInPlay);
+ this.staticText = "Starting with you, each player may put a permanent card from his or her hand onto the battlefield. Repeat this process until no one puts a card onto the battlefield";
+ }
+
+ public EurekaEffect(final EurekaEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public EurekaEffect copy() {
+ return new EurekaEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ PlayerList playerList = game.getState().getPlayerList();
+ while (!playerList.get().equals(source.getControllerId()) && controller.isInGame()) {
+ playerList.getNext();
+ }
+ Player currentPlayer = game.getPlayer(playerList.get());
+ UUID firstInactivePlayer = null;
+ Target target = new TargetCardInHand(new FilterPermanentCard());
+
+ while (controller.isInGame()) {
+ if (currentPlayer != null && controller.getInRange().contains(currentPlayer.getId())) {
+ if (firstInactivePlayer == null) {
+ firstInactivePlayer = currentPlayer.getId();
+ }
+ target.clearChosen();
+ if (target.canChoose(source.getSourceId(), currentPlayer.getId(), game)
+ && currentPlayer.chooseUse(outcome, "Put permanent from your hand to play?", game)) {
+ if (target.chooseTarget(outcome, currentPlayer.getId(), source, game)) {
+ Card card = game.getCard(target.getFirstTarget());
+ if (card != null) {
+ currentPlayer.putOntoBattlefieldWithInfo(card, game, Zone.HAND, source.getSourceId());
+ firstInactivePlayer = null;
+ }
+ }
+ }
+ }
+ // get next player
+ playerList.getNext();
+ currentPlayer = game.getPlayer(playerList.get());
+ // if all player since this player didn't put permanent in play finish the process
+ if (currentPlayer.getId().equals(firstInactivePlayer)) {
+ break;
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/Falter.java b/Mage.Sets/src/mage/sets/vintagemasters/Falter.java
new file mode 100644
index 0000000000..ac4c9110d4
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/Falter.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.vintagemasters;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class Falter extends mage.sets.urzassaga.Falter {
+
+ public Falter(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 158;
+ this.expansionSetCode = "VMA";
+ }
+
+ public Falter(final Falter card) {
+ super(card);
+ }
+
+ @Override
+ public Falter copy() {
+ return new Falter(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/FlowstoneHellion.java b/Mage.Sets/src/mage/sets/vintagemasters/FlowstoneHellion.java
new file mode 100644
index 0000000000..5ce843900f
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/FlowstoneHellion.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.vintagemasters;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class FlowstoneHellion extends mage.sets.stronghold.FlowstoneHellion {
+
+ public FlowstoneHellion(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 161;
+ this.expansionSetCode = "VMA";
+ }
+
+ public FlowstoneHellion(final FlowstoneHellion card) {
+ super(card);
+ }
+
+ @Override
+ public FlowstoneHellion copy() {
+ return new FlowstoneHellion(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/Gamble.java b/Mage.Sets/src/mage/sets/vintagemasters/Gamble.java
new file mode 100644
index 0000000000..0bd639f73d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/Gamble.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.vintagemasters;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class Gamble extends mage.sets.urzassaga.Gamble {
+
+ public Gamble(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 162;
+ this.expansionSetCode = "VMA";
+ }
+
+ public Gamble(final Gamble card) {
+ super(card);
+ }
+
+ @Override
+ public Gamble copy() {
+ return new Gamble(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/GoblinCommando.java b/Mage.Sets/src/mage/sets/vintagemasters/GoblinCommando.java
new file mode 100644
index 0000000000..e64f72f81b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/GoblinCommando.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.vintagemasters;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class GoblinCommando extends CardImpl {
+
+ public GoblinCommando(UUID ownerId) {
+ super(ownerId, 164, "Goblin Commando", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{4}{R}");
+ this.expansionSetCode = "VMA";
+ this.subtype.add("Goblin");
+
+ this.color.setRed(true);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // When Goblin Commando enters the battlefield, it deals 2 damage to target creature.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new DamageTargetEffect(2));
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public GoblinCommando(final GoblinCommando card) {
+ super(card);
+ }
+
+ @Override
+ public GoblinCommando copy() {
+ return new GoblinCommando(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/GoblinGeneral.java b/Mage.Sets/src/mage/sets/vintagemasters/GoblinGeneral.java
new file mode 100644
index 0000000000..47f66860e1
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/GoblinGeneral.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.vintagemasters;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.AttacksTriggeredAbility;
+import mage.abilities.effects.common.continious.BoostControlledEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class GoblinGeneral extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblin creatures");
+
+ static {
+ filter.add(new SubtypePredicate("Goblin"));
+ }
+
+ public GoblinGeneral(UUID ownerId) {
+ super(ownerId, 165, "Goblin General", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
+ this.expansionSetCode = "VMA";
+ this.subtype.add("Goblin");
+ this.subtype.add("Warrior");
+
+ this.color.setRed(true);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Whenever Goblin General attacks, Goblin creatures you control get +1/+1 until end of turn.
+ this.addAbility(new AttacksTriggeredAbility(new BoostControlledEffect(1, 1, Duration.EndOfTurn, filter, false), false));
+ }
+
+ public GoblinGeneral(final GoblinGeneral card) {
+ super(card);
+ }
+
+ @Override
+ public GoblinGeneral copy() {
+ return new GoblinGeneral(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/GoblinSettler.java b/Mage.Sets/src/mage/sets/vintagemasters/GoblinSettler.java
new file mode 100644
index 0000000000..914f5b2af6
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/GoblinSettler.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.vintagemasters;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.target.common.TargetLandPermanent;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class GoblinSettler extends CardImpl {
+
+ public GoblinSettler(UUID ownerId) {
+ super(ownerId, 172, "Goblin Settler", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{R}");
+ this.expansionSetCode = "VMA";
+ this.subtype.add("Goblin");
+
+ this.color.setRed(true);
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // When Goblin Settler enters the battlefield, destroy target land.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new DestroyTargetEffect());
+ ability.addTarget(new TargetLandPermanent());
+ this.addAbility(ability);
+ }
+
+ public GoblinSettler(final GoblinSettler card) {
+ super(card);
+ }
+
+ @Override
+ public GoblinSettler copy() {
+ return new GoblinSettler(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/GrizzlyFate.java b/Mage.Sets/src/mage/sets/vintagemasters/GrizzlyFate.java
new file mode 100644
index 0000000000..e948f104eb
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/GrizzlyFate.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.vintagemasters;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class GrizzlyFate extends mage.sets.judgment.GrizzlyFate {
+
+ public GrizzlyFate(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 215;
+ this.expansionSetCode = "VMA";
+ }
+
+ public GrizzlyFate(final GrizzlyFate card) {
+ super(card);
+ }
+
+ @Override
+ public GrizzlyFate copy() {
+ return new GrizzlyFate(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/HermitDruid.java b/Mage.Sets/src/mage/sets/vintagemasters/HermitDruid.java
new file mode 100644
index 0000000000..283945c891
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/HermitDruid.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.vintagemasters;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class HermitDruid extends mage.sets.stronghold.HermitDruid {
+
+ public HermitDruid(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 216;
+ this.expansionSetCode = "VMA";
+ }
+
+ public HermitDruid(final HermitDruid card) {
+ super(card);
+ }
+
+ @Override
+ public HermitDruid copy() {
+ return new HermitDruid(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/HulkingGoblin.java b/Mage.Sets/src/mage/sets/vintagemasters/HulkingGoblin.java
new file mode 100644
index 0000000000..e64ae2d434
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/HulkingGoblin.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.vintagemasters;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.CantBlockAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class HulkingGoblin extends CardImpl {
+
+ public HulkingGoblin(UUID ownerId) {
+ super(ownerId, 174, "Hulking Goblin", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{R}");
+ this.expansionSetCode = "VMA";
+ this.subtype.add("Goblin");
+
+ this.color.setRed(true);
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Hulking Goblin can't block.
+ this.addAbility(new CantBlockAbility());
+ }
+
+ public HulkingGoblin(final HulkingGoblin card) {
+ super(card);
+ }
+
+ @Override
+ public HulkingGoblin copy() {
+ return new HulkingGoblin(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/Kindle.java b/Mage.Sets/src/mage/sets/vintagemasters/Kindle.java
new file mode 100644
index 0000000000..5fd4d190a7
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/Kindle.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.vintagemasters;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class Kindle extends mage.sets.tempest.Kindle {
+
+ public Kindle(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 176;
+ this.expansionSetCode = "VMA";
+ }
+
+ public Kindle(final Kindle card) {
+ super(card);
+ }
+
+ @Override
+ public Kindle copy() {
+ return new Kindle(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/KrosanVorine.java b/Mage.Sets/src/mage/sets/vintagemasters/KrosanVorine.java
new file mode 100644
index 0000000000..2fb995b969
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/KrosanVorine.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.vintagemasters;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.common.combat.CantBeBlockedByMoreThanOneSourceEffect;
+import mage.abilities.keyword.ProvokeAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class KrosanVorine extends CardImpl {
+
+ public KrosanVorine(UUID ownerId) {
+ super(ownerId, 219, "Krosan Vorine", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{G}");
+ this.expansionSetCode = "VMA";
+ this.subtype.add("Cat");
+ this.subtype.add("Beast");
+
+ this.color.setGreen(true);
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(2);
+
+ // Provoke
+ this.addAbility(new ProvokeAbility());
+ // Krosan Vorine can't be blocked by more than one creature.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedByMoreThanOneSourceEffect()));
+ }
+
+ public KrosanVorine(final KrosanVorine card) {
+ super(card);
+ }
+
+ @Override
+ public KrosanVorine copy() {
+ return new KrosanVorine(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/LightningRift.java b/Mage.Sets/src/mage/sets/vintagemasters/LightningRift.java
new file mode 100644
index 0000000000..86078bd068
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/LightningRift.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.vintagemasters;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class LightningRift extends mage.sets.onslaught.LightningRift {
+
+ public LightningRift(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 178;
+ this.expansionSetCode = "VMA";
+ }
+
+ public LightningRift(final LightningRift card) {
+ super(card);
+ }
+
+ @Override
+ public LightningRift copy() {
+ return new LightningRift(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/PillagingHorde.java b/Mage.Sets/src/mage/sets/vintagemasters/PillagingHorde.java
new file mode 100644
index 0000000000..e09cc74791
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/PillagingHorde.java
@@ -0,0 +1,67 @@
+/*
+ * 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.vintagemasters;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.costs.common.DiscardCardCost;
+import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class PillagingHorde extends CardImpl {
+
+ public PillagingHorde(UUID ownerId) {
+ super(ownerId, 180, "Pillaging Horde", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{R}{R}");
+ this.expansionSetCode = "VMA";
+ this.subtype.add("Human");
+ this.subtype.add("Barbarian");
+
+ this.color.setRed(true);
+ this.power = new MageInt(5);
+ this.toughness = new MageInt(5);
+
+ // When Pillaging Horde enters the battlefield, sacrifice it unless you discard a card at random.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new DiscardCardCost(true))));
+ }
+
+ public PillagingHorde(final PillagingHorde card) {
+ super(card);
+ }
+
+ @Override
+ public PillagingHorde copy() {
+ return new PillagingHorde(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/Provoke.java b/Mage.Sets/src/mage/sets/vintagemasters/Provoke.java
new file mode 100644
index 0000000000..d1669eab3d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/Provoke.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.vintagemasters;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class Provoke extends mage.sets.stronghold.Provoke {
+
+ public Provoke(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 225;
+ this.expansionSetCode = "VMA";
+ }
+
+ public Provoke(final Provoke card) {
+ super(card);
+ }
+
+ @Override
+ public Provoke copy() {
+ return new Provoke(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/ShivanWurm.java b/Mage.Sets/src/mage/sets/vintagemasters/ShivanWurm.java
new file mode 100644
index 0000000000..e0adf1d40d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/ShivanWurm.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.vintagemasters;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.ReturnToHandTargetEffect;
+import mage.abilities.keyword.TrampleAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.ColorPredicate;
+import mage.target.common.TargetControlledCreaturePermanent;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class ShivanWurm extends CardImpl {
+
+ static final private FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("red or green creature you control");
+
+ static {
+ filter.add(Predicates.or(new ColorPredicate(ObjectColor.RED), new ColorPredicate(ObjectColor.GREEN)));
+ }
+
+ public ShivanWurm(UUID ownerId) {
+ super(ownerId, 261, "Shivan Wurm", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{R}{G}");
+ this.expansionSetCode = "VMA";
+ this.subtype.add("Wurm");
+
+ this.color.setRed(true);
+ this.color.setGreen(true);
+ this.power = new MageInt(7);
+ this.toughness = new MageInt(7);
+
+ // Trample
+ this.addAbility(TrampleAbility.getInstance());
+ // When Shivan Wurm enters the battlefield, return a red or green creature you control to its owner's hand.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new ReturnToHandTargetEffect(), false);
+ ability.addTarget(new TargetControlledCreaturePermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public ShivanWurm(final ShivanWurm card) {
+ super(card);
+ }
+
+ @Override
+ public ShivanWurm copy() {
+ return new ShivanWurm(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/SilvosRogueElemental.java b/Mage.Sets/src/mage/sets/vintagemasters/SilvosRogueElemental.java
new file mode 100644
index 0000000000..cfd301056b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/SilvosRogueElemental.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.vintagemasters;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class SilvosRogueElemental extends mage.sets.onslaught.SilvosRogueElemental {
+
+ public SilvosRogueElemental(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 231;
+ this.expansionSetCode = "VMA";
+ }
+
+ public SilvosRogueElemental(final SilvosRogueElemental card) {
+ super(card);
+ }
+
+ @Override
+ public SilvosRogueElemental copy() {
+ return new SilvosRogueElemental(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/SolarBlast.java b/Mage.Sets/src/mage/sets/vintagemasters/SolarBlast.java
new file mode 100644
index 0000000000..0c9ad2a360
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/SolarBlast.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.vintagemasters;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class SolarBlast extends mage.sets.onslaught.SolarBlast {
+
+ public SolarBlast(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 187;
+ this.expansionSetCode = "VMA";
+ }
+
+ public SolarBlast(final SolarBlast card) {
+ super(card);
+ }
+
+ @Override
+ public SolarBlast copy() {
+ return new SolarBlast(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/SparkSpray.java b/Mage.Sets/src/mage/sets/vintagemasters/SparkSpray.java
new file mode 100644
index 0000000000..8d60f693f6
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/SparkSpray.java
@@ -0,0 +1,67 @@
+/*
+ * 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.vintagemasters;
+
+import java.util.UUID;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.abilities.keyword.CyclingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class SparkSpray extends CardImpl {
+
+ public SparkSpray(UUID ownerId) {
+ super(ownerId, 188, "Spark Spray", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{R}");
+ this.expansionSetCode = "VMA";
+
+ this.color.setRed(true);
+
+ // Spark Spray deals 1 damage to target creature or player.
+ this.getSpellAbility().addEffect(new DamageTargetEffect(1));
+ this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
+
+ // Cycling {R}
+ this.addAbility(new CyclingAbility(new ManaCostsImpl("{R}")));
+ }
+
+ public SparkSpray(final SparkSpray card) {
+ super(card);
+ }
+
+ @Override
+ public SparkSpray copy() {
+ return new SparkSpray(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/SuddenStrength.java b/Mage.Sets/src/mage/sets/vintagemasters/SuddenStrength.java
new file mode 100644
index 0000000000..c3d88b4538
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/SuddenStrength.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.vintagemasters;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class SuddenStrength extends mage.sets.judgment.SuddenStrength {
+
+ public SuddenStrength(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 233;
+ this.expansionSetCode = "VMA";
+ }
+
+ public SuddenStrength(final SuddenStrength card) {
+ super(card);
+ }
+
+ @Override
+ public SuddenStrength copy() {
+ return new SuddenStrength(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/SymbioticWurm.java b/Mage.Sets/src/mage/sets/vintagemasters/SymbioticWurm.java
new file mode 100644
index 0000000000..2969a0d870
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/SymbioticWurm.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.vintagemasters;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class SymbioticWurm extends mage.sets.onslaught.SymbioticWurm {
+
+ public SymbioticWurm(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 236;
+ this.expansionSetCode = "VMA";
+ this.rarity = Rarity.UNCOMMON;
+ }
+
+ public SymbioticWurm(final SymbioticWurm card) {
+ super(card);
+ }
+
+ @Override
+ public SymbioticWurm copy() {
+ return new SymbioticWurm(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/Tangle.java b/Mage.Sets/src/mage/sets/vintagemasters/Tangle.java
new file mode 100644
index 0000000000..bb6e11fd53
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/Tangle.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.vintagemasters;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class Tangle extends mage.sets.invasion.Tangle {
+
+ public Tangle(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 237;
+ this.expansionSetCode = "VMA";
+ this.rarity = Rarity.COMMON;
+ }
+
+ public Tangle(final Tangle card) {
+ super(card);
+ }
+
+ @Override
+ public Tangle copy() {
+ return new Tangle(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/WallOfDiffusion.java b/Mage.Sets/src/mage/sets/vintagemasters/WallOfDiffusion.java
new file mode 100644
index 0000000000..ddab0e1066
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/WallOfDiffusion.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.vintagemasters;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class WallOfDiffusion extends mage.sets.tempest.WallOfDiffusion {
+
+ public WallOfDiffusion(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 191;
+ this.expansionSetCode = "VMA";
+ }
+
+ public WallOfDiffusion(final WallOfDiffusion card) {
+ super(card);
+ }
+
+ @Override
+ public WallOfDiffusion copy() {
+ return new WallOfDiffusion(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/WorldgorgerDragon.java b/Mage.Sets/src/mage/sets/vintagemasters/WorldgorgerDragon.java
new file mode 100644
index 0000000000..d5011b9158
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/WorldgorgerDragon.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.vintagemasters;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class WorldgorgerDragon extends mage.sets.judgment.WorldgorgerDragon {
+
+ public WorldgorgerDragon(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 193;
+ this.expansionSetCode = "VMA";
+ }
+
+ public WorldgorgerDragon(final WorldgorgerDragon card) {
+ super(card);
+ }
+
+ @Override
+ public WorldgorgerDragon copy() {
+ return new WorldgorgerDragon(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/YavimayaElder.java b/Mage.Sets/src/mage/sets/vintagemasters/YavimayaElder.java
new file mode 100644
index 0000000000..269e30a9f6
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/YavimayaElder.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.vintagemasters;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class YavimayaElder extends mage.sets.commander.YavimayaElder {
+
+ public YavimayaElder(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 240;
+ this.expansionSetCode = "VMA";
+ this.rarity = Rarity.UNCOMMON;
+ }
+
+ public YavimayaElder(final YavimayaElder card) {
+ super(card);
+ }
+
+ @Override
+ public YavimayaElder copy() {
+ return new YavimayaElder(this);
+ }
+}
diff --git a/Mage/src/mage/abilities/effects/common/SkipNextUntapTargetEffect.java b/Mage/src/mage/abilities/effects/common/SkipNextUntapTargetEffect.java
index 656663488c..30479fc63a 100644
--- a/Mage/src/mage/abilities/effects/common/SkipNextUntapTargetEffect.java
+++ b/Mage/src/mage/abilities/effects/common/SkipNextUntapTargetEffect.java
@@ -28,26 +28,26 @@
package mage.abilities.effects.common;
-import mage.constants.Duration;
-import mage.constants.Outcome;
-import mage.constants.PhaseStep;
-import mage.abilities.Ability;
-import mage.abilities.Mode;
-import mage.abilities.effects.ReplacementEffectImpl;
-import mage.game.Game;
-import mage.game.events.GameEvent;
-import mage.game.events.GameEvent.EventType;
-
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.Mode;
+import mage.abilities.effects.ReplacementEffectImpl;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.PhaseStep;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.GameEvent.EventType;
+import mage.game.permanent.Permanent;
/**
* @author BetaSteward_at_googlemail.com
*/
public class SkipNextUntapTargetEffect extends ReplacementEffectImpl {
- protected Set usedFor = new HashSet();
+ protected Set usedFor = new HashSet<>();
protected int count;
public SkipNextUntapTargetEffect() {
@@ -79,15 +79,10 @@ public class SkipNextUntapTargetEffect extends ReplacementEffectImpl {
@Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
- if (targetPointer.getTargets(game, source).size() < 2) {
- used = true;
- } else {
- count++;
- }
// not clear how to turn off the effect for more than one target
// especially as some targets may leave the battlefield since the effect creation
// so handling this in applies method is the only option for now for such cases
- if (count == targetPointer.getTargets(game, source).size()) {
+ if (usedFor.size() >= targetPointer.getTargets(game, source).size()) {
// this won't work for targets disappeared before applies() return true
used = true;
}
@@ -97,17 +92,19 @@ public class SkipNextUntapTargetEffect extends ReplacementEffectImpl {
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
if (game.getTurn().getStepType() == PhaseStep.UNTAP && event.getType() == EventType.UNTAP) {
- for (UUID target : targetPointer.getTargets(game, source)) {
- if (event.getTargetId().equals(target)) {
- if (!usedFor.contains(target)) {
- usedFor.add(target);
- return true;
- }
- break;
+ if (targetPointer.getTargets(game, source).contains(event.getTargetId())
+ && !usedFor.contains(event.getTargetId())) {
+ Permanent permanent = game.getPermanent(event.getTargetId());
+ if (permanent == null) {
+ usedFor.add(event.getTargetId());
+ return false;
+ }
+ if (permanent.getControllerId().equals(game.getActivePlayerId())) {
+ usedFor.add(event.getTargetId());
+ return true;
}
- }
- return false;
+ }
}
return false;
}
diff --git a/Mage/src/mage/abilities/effects/common/combat/BlocksIfAbleTargetEffect.java b/Mage/src/mage/abilities/effects/common/combat/BlocksIfAbleTargetEffect.java
index 538bb6532e..42bbc012b8 100644
--- a/Mage/src/mage/abilities/effects/common/combat/BlocksIfAbleTargetEffect.java
+++ b/Mage/src/mage/abilities/effects/common/combat/BlocksIfAbleTargetEffect.java
@@ -77,6 +77,9 @@ public class BlocksIfAbleTargetEffect extends RequirementEffect {
@Override
public String getText(Mode mode) {
+ if (staticText != null && !staticText.isEmpty()) {
+ return staticText;
+ }
if (this.duration == Duration.EndOfTurn) {
return "Target " + mode.getTargets().get(0).getTargetName() + " blocks this turn if able";
}
diff --git a/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java b/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java
index d822319937..77671d34f8 100644
--- a/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java
+++ b/Mage/src/mage/abilities/effects/common/continious/GainAbilityTargetEffect.java
@@ -28,6 +28,7 @@
package mage.abilities.effects.common.continious;
+import java.util.Locale;
import mage.constants.Duration;
import mage.constants.Layer;
import mage.constants.Outcome;
@@ -41,6 +42,8 @@ import mage.target.Target;
import java.util.UUID;
import mage.cards.Card;
+import mage.constants.PhaseStep;
+import mage.game.turn.Step;
/**
*
@@ -52,6 +55,11 @@ public class GainAbilityTargetEffect extends ContinuousEffectImpl {
// shall a card gain the ability (otherwise permanent)
private boolean onCard;
+ // Duration until next phase step of player
+ private PhaseStep durationPhaseStep = null;
+ private UUID durationPlayerId;
+ private boolean sameStep;
+
public GainAbilityTargetEffect(Ability ability, Duration duration) {
this(ability, duration, null);
}
@@ -72,6 +80,41 @@ public class GainAbilityTargetEffect extends ContinuousEffectImpl {
super(effect);
this.ability = effect.ability.copy();
this.onCard = effect.onCard;
+ this.durationPhaseStep = effect.durationPhaseStep;
+ this.durationPlayerId = effect.durationPlayerId;
+ this.sameStep = effect.sameStep;
+ }
+
+ /**
+ * Used to set a duration to the next durationPhaseStep of the
+ * first controller of the effect.
+ *
+ * @param phaseStep
+ */
+ public void setDurationToPhase(PhaseStep phaseStep) {
+ durationPhaseStep = phaseStep;
+ }
+
+ @Override
+ public void init(Ability source, Game game) {
+ super.init(source, game);
+ if (durationPhaseStep != null) {
+ durationPlayerId = source.getControllerId();
+ sameStep = true;
+ }
+ }
+
+ @Override
+ public boolean isInactive(Ability source, Game game) {
+ if (durationPhaseStep != null && durationPhaseStep.equals(game.getPhase().getStep().getType()))
+ {
+ if (!sameStep && game.getActivePlayerId().equals(durationPlayerId) || game.getPlayer(durationPlayerId).hasReachedNextTurnAfterLeaving()) {
+ return true;
+ }
+ } else {
+ sameStep = false;
+ }
+ return false;
}
@Override
@@ -127,7 +170,12 @@ public class GainAbilityTargetEffect extends ContinuousEffectImpl {
sb.append(target.getTargetName()).append(" gains ");
}
- sb.append(ability.getRule()).append(" ").append(duration.toString());
+ if (durationPhaseStep != null) {
+ sb.append(" until your next ").append(durationPhaseStep.toString().toLowerCase(Locale.ENGLISH));
+ }
+ if (!duration.toString().isEmpty()) {
+ sb.append(ability.getRule()).append(" ").append(duration.toString());
+ }
return sb.toString();
}
diff --git a/Mage/src/mage/abilities/keyword/ShadowAbility.java b/Mage/src/mage/abilities/keyword/ShadowAbility.java
index ee4d2cc917..338cec22bc 100644
--- a/Mage/src/mage/abilities/keyword/ShadowAbility.java
+++ b/Mage/src/mage/abilities/keyword/ShadowAbility.java
@@ -1,15 +1,15 @@
package mage.abilities.keyword;
+import java.io.ObjectStreamException;
import mage.abilities.Ability;
import mage.abilities.EvasionAbility;
import mage.abilities.MageSingleton;
import mage.abilities.effects.RestrictionEffect;
+import mage.constants.AsThoughEffectType;
import mage.constants.Duration;
import mage.game.Game;
import mage.game.permanent.Permanent;
-import java.io.ObjectStreamException;
-
/**
* "Shadow" keyword
* @author Loki
@@ -61,8 +61,10 @@ class ShadowEffect extends RestrictionEffect implements MageSingleton {
@Override
public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) {
- if (blocker.getAbilities().containsKey(ShadowAbility.getInstance().getId()))
+ if (blocker.getAbilities().containsKey(ShadowAbility.getInstance().getId())
+ || game.getContinuousEffects().asThough(blocker.getId(), AsThoughEffectType.BLOCK_SHADOW, blocker.getControllerId(), game)) {
return true;
+ }
return false;
}
diff --git a/Mage/src/mage/constants/AsThoughEffectType.java b/Mage/src/mage/constants/AsThoughEffectType.java
index b910e80f8f..821f6be1e5 100644
--- a/Mage/src/mage/constants/AsThoughEffectType.java
+++ b/Mage/src/mage/constants/AsThoughEffectType.java
@@ -8,6 +8,7 @@ public enum AsThoughEffectType {
ATTACK,
ACTIVATE_HASTE,
BLOCK_TAPPED,
+ BLOCK_SHADOW,
BE_BLOCKED,
CAST,
DAMAGE,
diff --git a/Mage/src/mage/game/permanent/token/InsectToken.java b/Mage/src/mage/game/permanent/token/InsectToken.java
index c02738ea19..4fe7f8533b 100644
--- a/Mage/src/mage/game/permanent/token/InsectToken.java
+++ b/Mage/src/mage/game/permanent/token/InsectToken.java
@@ -28,9 +28,8 @@
package mage.game.permanent.token;
-import mage.constants.CardType;
import mage.MageInt;
-import mage.ObjectColor;
+import mage.constants.CardType;
/**
*
@@ -39,9 +38,14 @@ import mage.ObjectColor;
public class InsectToken extends Token {
public InsectToken() {
+ this("M10");
+ }
+
+ public InsectToken(String setCode) {
super("Insect", "1/1 green Insect creature token");
+ setOriginalExpansionSetCode(setCode);
cardType.add(CardType.CREATURE);
- color = ObjectColor.GREEN;
+ color.setGreen(true);
subtype.add("Insect");
power = new MageInt(1);
toughness = new MageInt(1);
diff --git a/Mage/src/mage/game/turn/Step.java b/Mage/src/mage/game/turn/Step.java
index 19414ee7ed..0f646ccc69 100644
--- a/Mage/src/mage/game/turn/Step.java
+++ b/Mage/src/mage/game/turn/Step.java
@@ -81,7 +81,7 @@ public abstract class Step implements Serializable {
stepPart = StepPart.PRE;
}
- public void priority(Game game, UUID activePlayerId, boolean resuming) {
+ public void priority(Game game, UUID activePlayerId, boolean resuming) {
if (hasPriority) {
stepPart = StepPart.PRIORITY;
game.playPriority(activePlayerId, resuming);
diff --git a/Mage/src/mage/game/turn/Turn.java b/Mage/src/mage/game/turn/Turn.java
index b00e44eda6..dc63a5f45f 100644
--- a/Mage/src/mage/game/turn/Turn.java
+++ b/Mage/src/mage/game/turn/Turn.java
@@ -123,7 +123,7 @@ public class Turn implements Serializable {
resetCounts();
game.getPlayer(activePlayerId).beginTurn(game);
for (Phase phase: phases) {
- if (game.isPaused() || game.gameOver(null)) {
+ if (game.isPaused() || game.gameOver(null)) {
return;
}
currentPhase = phase;
diff --git a/Mage/src/mage/target/common/TargetCardInHand.java b/Mage/src/mage/target/common/TargetCardInHand.java
index 1d05599506..78ce6c6679 100644
--- a/Mage/src/mage/target/common/TargetCardInHand.java
+++ b/Mage/src/mage/target/common/TargetCardInHand.java
@@ -68,14 +68,19 @@ public class TargetCardInHand extends TargetCard {
}
@Override
- public boolean canTarget(UUID id, Ability source, Game game) {
- Card card = game.getPlayer(source.getControllerId()).getHand().get(id, game);
+ public boolean canTarget(UUID id, UUID playerId, Ability source, Game game) {
+ Card card = game.getPlayer(playerId).getHand().get(id, game);
if (card != null) {
- return filter.match(card, source.getControllerId(), game);
+ return filter.match(card, source.getSourceId(), playerId, game);
}
return false;
}
+ @Override
+ public boolean canTarget(UUID id, Ability source, Game game) {
+ return this.canTarget(id, source.getControllerId(), source, game);
+ }
+
@Override
public Set possibleTargets(UUID sourceId, UUID playerId, Game game) {
Set possibleTargets = new HashSet<>();
diff --git a/Mage/src/mage/target/common/TargetControlledCreaturePermanent.java b/Mage/src/mage/target/common/TargetControlledCreaturePermanent.java
index dd0c54cb86..f42ba28297 100644
--- a/Mage/src/mage/target/common/TargetControlledCreaturePermanent.java
+++ b/Mage/src/mage/target/common/TargetControlledCreaturePermanent.java
@@ -44,6 +44,10 @@ public class TargetControlledCreaturePermanent extends TargetControlledPermanent
this(numTargets, numTargets, new FilterControlledCreaturePermanent(), false);
}
+ public TargetControlledCreaturePermanent(FilterControlledCreaturePermanent filter) {
+ super(1, 1, filter, false);
+ }
+
public TargetControlledCreaturePermanent(int minNumTargets, int maxNumTargets, FilterControlledCreaturePermanent filter, boolean notTarget) {
super(minNumTargets, maxNumTargets, filter, notTarget);
this.targetName = filter.getMessage();
diff --git a/Utils/keywords.txt b/Utils/keywords.txt
index 1ef811c1a8..5e74b26d0d 100644
--- a/Utils/keywords.txt
+++ b/Utils/keywords.txt
@@ -18,6 +18,7 @@ Fear|instance|
First strike|instance|
Flanking|new|
Flash|instance|
+Flashback|cost|
Flying|instance|
Forestcycling|cost|
Forestwalk|new|