From 39dea2890b8d9a0ac4fef4ef881cbfe9f3c12669 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Thu, 25 Aug 2011 11:21:56 +0400 Subject: [PATCH 1/3] Commented out Error Dialog for a while to fix compilation problems. --- Mage.Client/src/main/java/mage/client/MageFrame.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java index 186ccb9a107..e67d680f82e 100644 --- a/Mage.Client/src/main/java/mage/client/MageFrame.java +++ b/Mage.Client/src/main/java/mage/client/MageFrame.java @@ -106,7 +106,7 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { private static Session session; private ConnectDialog connectDialog; - private ErrorDialog errorDialog; + //private ErrorDialog errorDialog; private static CallbackClient callbackClient; private static Preferences prefs = Preferences.userNodeForPackage(MageFrame.class); private JLabel title; @@ -189,8 +189,8 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { callbackClient = new CallbackClientImpl(this); connectDialog = new ConnectDialog(); desktopPane.add(connectDialog, JLayeredPane.POPUP_LAYER); - errorDialog = new ErrorDialog(); - desktopPane.add(errorDialog, JLayeredPane.POPUP_LAYER); + //errorDialog = new ErrorDialog(); + //desktopPane.add(errorDialog, JLayeredPane.POPUP_LAYER); ui.addComponent(MageComponents.DESKTOP_PANE, desktopPane); try { @@ -839,13 +839,13 @@ public class MageFrame extends javax.swing.JFrame implements MageClient { public void showErrorDialog(final String title, final String message) { if (SwingUtilities.isEventDispatchThread()) { - errorDialog.showDialog(title, message); + //errorDialog.showDialog(title, message); } else { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { - errorDialog.showDialog(title, message); + //errorDialog.showDialog(title, message); } }); } From 5c813a273f8b00998bcc1c9372670f76ca6f3bf2 Mon Sep 17 00:00:00 2001 From: North Date: Thu, 25 Aug 2011 11:53:37 +0300 Subject: [PATCH 2/3] Added CantBeBlockedByOneEffect and cards using it (also refactored cards) --- .../sets/championsofkamigawa/VineKami.java | 68 ++++++++++++++ .../sets/magic2012/StormbloodBerserker.java | 90 +++++-------------- .../riseoftheeldrazi/PathrazerOfUlamog.java | 53 +---------- .../mage/sets/shadowmoor/HordeOfBoggarts.java | 79 ++++++++++++++++ .../sets/shardsofalara/KederektCreeper.java | 70 +++++++++++++++ .../src/mage/sets/tenth/ViashinoRunner.java | 66 ++++++++++++++ .../continious/CantBeBlockedByOneEffect.java | 86 ++++++++++++++++++ 7 files changed, 394 insertions(+), 118 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/championsofkamigawa/VineKami.java create mode 100644 Mage.Sets/src/mage/sets/shadowmoor/HordeOfBoggarts.java create mode 100644 Mage.Sets/src/mage/sets/shardsofalara/KederektCreeper.java create mode 100644 Mage.Sets/src/mage/sets/tenth/ViashinoRunner.java create mode 100644 Mage/src/mage/abilities/effects/common/continious/CantBeBlockedByOneEffect.java diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/VineKami.java b/Mage.Sets/src/mage/sets/championsofkamigawa/VineKami.java new file mode 100644 index 00000000000..adf9dca54b6 --- /dev/null +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/VineKami.java @@ -0,0 +1,68 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.championsofkamigawa; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.continious.CantBeBlockedByOneEffect; +import mage.abilities.keyword.SoulshiftAbility; +import mage.cards.CardImpl; + +/** + * + * @author North + */ +public class VineKami extends CardImpl { + + public VineKami(UUID ownerId) { + super(ownerId, 249, "Vine Kami", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{6}{G}"); + this.expansionSetCode = "CHK"; + this.subtype.add("Spirit"); + + this.color.setGreen(true); + this.power = new MageInt(4); + this.toughness = new MageInt(4); + + // Vine Kami can't be blocked except by two or more creatures. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedByOneEffect(2))); + this.addAbility(new SoulshiftAbility(6)); + } + + public VineKami(final VineKami card) { + super(card); + } + + @Override + public VineKami copy() { + return new VineKami(this); + } +} diff --git a/Mage.Sets/src/mage/sets/magic2012/StormbloodBerserker.java b/Mage.Sets/src/mage/sets/magic2012/StormbloodBerserker.java index 3289b96bc17..52541235ba9 100644 --- a/Mage.Sets/src/mage/sets/magic2012/StormbloodBerserker.java +++ b/Mage.Sets/src/mage/sets/magic2012/StormbloodBerserker.java @@ -27,88 +27,42 @@ */ package mage.sets.magic2012; -import mage.Constants; +import java.util.UUID; import mage.Constants.CardType; import mage.Constants.Rarity; +import mage.Constants.Zone; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.ContinuousEffectImpl; +import mage.abilities.effects.common.continious.CantBeBlockedByOneEffect; import mage.abilities.keyword.BloodthirstAbility; import mage.cards.CardImpl; -import mage.game.Game; -import mage.game.permanent.Permanent; - -import java.util.UUID; /** * @author nantuko */ public class StormbloodBerserker extends CardImpl { - public StormbloodBerserker(UUID ownerId) { - super(ownerId, 156, "Stormblood Berserker", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{R}"); - this.expansionSetCode = "M12"; - this.subtype.add("Human"); - this.subtype.add("Berserker"); + public StormbloodBerserker(UUID ownerId) { + super(ownerId, 156, "Stormblood Berserker", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{R}"); + this.expansionSetCode = "M12"; + this.subtype.add("Human"); + this.subtype.add("Berserker"); - this.color.setRed(true); - this.power = new MageInt(1); - this.toughness = new MageInt(1); + this.color.setRed(true); + this.power = new MageInt(1); + this.toughness = new MageInt(1); - this.addAbility(new BloodthirstAbility(2)); - // Stormblood Berserker can't be blocked except by two or more creatures. - this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, new StormbloodBerserkerEffect())); - } + this.addAbility(new BloodthirstAbility(2)); + // Stormblood Berserker can't be blocked except by two or more creatures. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedByOneEffect(2))); + } - public StormbloodBerserker(final StormbloodBerserker card) { - super(card); - } - - @Override - public StormbloodBerserker copy() { - return new StormbloodBerserker(this); - } -} - -class StormbloodBerserkerEffect extends ContinuousEffectImpl { - - public StormbloodBerserkerEffect() { - super(Constants.Duration.WhileOnBattlefield, Constants.Outcome.Benefit); - staticText = "{this} can't be blocked except by two or more creatures"; - } - - public StormbloodBerserkerEffect(final StormbloodBerserkerEffect effect) { - super(effect); - } - - @Override - public StormbloodBerserkerEffect copy() { - return new StormbloodBerserkerEffect(this); - } - - @Override - public boolean apply(Constants.Layer layer, Constants.SubLayer sublayer, Ability source, Game game) { - Permanent perm = game.getPermanent(source.getSourceId()); - if (perm != null) { - switch (layer) { - case RulesEffects: - perm.setMinBlockedBy(2); - break; - } - return true; - } - return false; - } - - @Override - public boolean apply(Game game, Ability source) { - return false; - } - - @Override - public boolean hasLayer(Constants.Layer layer) { - return layer == Constants.Layer.RulesEffects; - } + public StormbloodBerserker(final StormbloodBerserker card) { + super(card); + } + @Override + public StormbloodBerserker copy() { + return new StormbloodBerserker(this); + } } diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/PathrazerOfUlamog.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/PathrazerOfUlamog.java index b7809b91070..66da58aab49 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/PathrazerOfUlamog.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/PathrazerOfUlamog.java @@ -29,20 +29,13 @@ package mage.sets.riseoftheeldrazi; import java.util.UUID; import mage.Constants.CardType; -import mage.Constants.Duration; -import mage.Constants.Layer; -import mage.Constants.Outcome; import mage.Constants.Rarity; -import mage.Constants.SubLayer; import mage.Constants.Zone; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.ContinuousEffectImpl; +import mage.abilities.effects.common.continious.CantBeBlockedByOneEffect; import mage.abilities.keyword.AnnihilatorAbility; import mage.cards.CardImpl; -import mage.game.Game; -import mage.game.permanent.Permanent; /** * @@ -59,7 +52,8 @@ public class PathrazerOfUlamog extends CardImpl { this.toughness = new MageInt(9); this.addAbility(new AnnihilatorAbility(3)); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PathrazerOfUlamogEffect())); + // Pathrazer of Ulamog can't be blocked except by three or more creatures. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedByOneEffect(3))); } public PathrazerOfUlamog(final PathrazerOfUlamog card) { @@ -71,44 +65,3 @@ public class PathrazerOfUlamog extends CardImpl { return new PathrazerOfUlamog(this); } } - -class PathrazerOfUlamogEffect extends ContinuousEffectImpl { - - public PathrazerOfUlamogEffect() { - super(Duration.WhileOnBattlefield, Outcome.Benefit); - staticText = "{this} can't be blocked except by three or more creatures"; - } - - public PathrazerOfUlamogEffect(final PathrazerOfUlamogEffect effect) { - super(effect); - } - - @Override - public PathrazerOfUlamogEffect copy() { - return new PathrazerOfUlamogEffect(this); - } - - @Override - public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) { - Permanent perm = game.getPermanent(source.getSourceId()); - if (perm != null) { - switch (layer) { - case RulesEffects: - perm.setMinBlockedBy(3); - break; - } - return true; - } - return false; - } - - @Override - public boolean apply(Game game, Ability source) { - return false; - } - - @Override - public boolean hasLayer(Layer layer) { - return layer == Layer.RulesEffects; - } -} diff --git a/Mage.Sets/src/mage/sets/shadowmoor/HordeOfBoggarts.java b/Mage.Sets/src/mage/sets/shadowmoor/HordeOfBoggarts.java new file mode 100644 index 00000000000..a46be0365f1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/shadowmoor/HordeOfBoggarts.java @@ -0,0 +1,79 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.shadowmoor; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.effects.common.continious.CantBeBlockedByOneEffect; +import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; +import mage.cards.CardImpl; +import mage.filter.common.FilterControlledPermanent; + +/** + * + * @author North + */ +public class HordeOfBoggarts extends CardImpl { + + private static final FilterControlledPermanent filter = new FilterControlledPermanent("red permanents you control"); + + static { + filter.getColor().setRed(true); + filter.setUseColor(true); + } + + public HordeOfBoggarts(UUID ownerId) { + super(ownerId, 94, "Horde of Boggarts", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{R}"); + this.expansionSetCode = "SHM"; + this.subtype.add("Goblin"); + + this.color.setRed(true); + this.power = new MageInt(0); + this.toughness = new MageInt(0); + + // Horde of Boggarts's power and toughness are each equal to the number of red permanents you control. + this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(filter), Duration.EndOfGame))); + // Horde of Boggarts can't be blocked except by two or more creatures. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedByOneEffect(2))); + } + + public HordeOfBoggarts(final HordeOfBoggarts card) { + super(card); + } + + @Override + public HordeOfBoggarts copy() { + return new HordeOfBoggarts(this); + } +} diff --git a/Mage.Sets/src/mage/sets/shardsofalara/KederektCreeper.java b/Mage.Sets/src/mage/sets/shardsofalara/KederektCreeper.java new file mode 100644 index 00000000000..c86c3ad34d9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/shardsofalara/KederektCreeper.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.shardsofalara; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.continious.CantBeBlockedByOneEffect; +import mage.abilities.keyword.DeathtouchAbility; +import mage.cards.CardImpl; + +/** + * + * @author North + */ +public class KederektCreeper extends CardImpl { + + public KederektCreeper(UUID ownerId) { + super(ownerId, 176, "Kederekt Creeper", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{U}{B}{R}"); + this.expansionSetCode = "ALA"; + this.subtype.add("Horror"); + + this.color.setRed(true); + this.color.setBlue(true); + this.color.setBlack(true); + this.power = new MageInt(2); + this.toughness = new MageInt(3); + + this.addAbility(DeathtouchAbility.getInstance()); + // Kederekt Creeper can't be blocked except by two or more creatures. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedByOneEffect(2))); + } + + public KederektCreeper(final KederektCreeper card) { + super(card); + } + + @Override + public KederektCreeper copy() { + return new KederektCreeper(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tenth/ViashinoRunner.java b/Mage.Sets/src/mage/sets/tenth/ViashinoRunner.java new file mode 100644 index 00000000000..0e13edd8e29 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tenth/ViashinoRunner.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.tenth; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.continious.CantBeBlockedByOneEffect; +import mage.cards.CardImpl; + +/** + * + * @author North + */ +public class ViashinoRunner extends CardImpl { + + public ViashinoRunner(UUID ownerId) { + super(ownerId, 245, "Viashino Runner", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{R}"); + this.expansionSetCode = "10E"; + this.subtype.add("Viashino"); + + this.color.setRed(true); + this.power = new MageInt(3); + this.toughness = new MageInt(2); + + // Viashino Runner can't be blocked except by two or more creatures. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedByOneEffect(2))); + } + + public ViashinoRunner(final ViashinoRunner card) { + super(card); + } + + @Override + public ViashinoRunner copy() { + return new ViashinoRunner(this); + } +} diff --git a/Mage/src/mage/abilities/effects/common/continious/CantBeBlockedByOneEffect.java b/Mage/src/mage/abilities/effects/common/continious/CantBeBlockedByOneEffect.java new file mode 100644 index 00000000000..1654a3a75fe --- /dev/null +++ b/Mage/src/mage/abilities/effects/common/continious/CantBeBlockedByOneEffect.java @@ -0,0 +1,86 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.abilities.effects.common.continious; + +import mage.Constants.Duration; +import mage.Constants.Layer; +import mage.Constants.Outcome; +import mage.Constants.SubLayer; +import mage.abilities.Ability; +import mage.abilities.effects.ContinuousEffectImpl; +import mage.game.Game; +import mage.game.permanent.Permanent; + +/** + * + * @author North + */ +public class CantBeBlockedByOneEffect extends ContinuousEffectImpl { + + protected int amount; + + public CantBeBlockedByOneEffect(int amount) { + super(Duration.WhileOnBattlefield, Outcome.Benefit); + this.amount = amount; + staticText = "{this} can't be blocked except by " + amount + " or more creatures"; + } + + public CantBeBlockedByOneEffect(final CantBeBlockedByOneEffect effect) { + super(effect); + this.amount = effect.amount; + } + + @Override + public CantBeBlockedByOneEffect copy() { + return new CantBeBlockedByOneEffect(this); + } + + @Override + public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) { + Permanent perm = game.getPermanent(source.getSourceId()); + if (perm != null) { + switch (layer) { + case RulesEffects: + perm.setMinBlockedBy(amount); + break; + } + return true; + } + return false; + } + + @Override + public boolean apply(Game game, Ability source) { + return false; + } + + @Override + public boolean hasLayer(Layer layer) { + return layer == Layer.RulesEffects; + } +} \ No newline at end of file From 86c4292659207acf6ae50bb5703f07313952dc44 Mon Sep 17 00:00:00 2001 From: North Date: Thu, 25 Aug 2011 11:54:52 +0300 Subject: [PATCH 3/3] Fixed Dungrove Elder. Fixed cards that were filtering lands. --- .../src/mage/sets/magic2010/HowlOfTheNightPack.java | 2 +- .../src/mage/sets/magic2010/SeismicStrike.java | 2 +- .../mage/sets/magic2010/TendrilsOfCorruption.java | 2 +- .../src/mage/sets/magic2012/DungroveElder.java | 13 ++++++++----- Mage.Sets/src/mage/sets/newphyrexia/Lashwrithe.java | 2 +- Mage.Sets/src/mage/sets/tenth/BlanchwoodArmor.java | 4 +--- Mage.Sets/src/mage/sets/tenth/Mortivore.java | 2 +- Mage.Sets/src/mage/sets/tenth/Nightmare.java | 2 +- Mage.Sets/src/mage/sets/tenth/SpittingEarth.java | 2 +- Mage.Sets/src/mage/sets/zendikar/PrimalBellow.java | 2 +- .../src/mage/sets/zendikar/TimbermawLarva.java | 2 +- 11 files changed, 18 insertions(+), 17 deletions(-) diff --git a/Mage.Sets/src/mage/sets/magic2010/HowlOfTheNightPack.java b/Mage.Sets/src/mage/sets/magic2010/HowlOfTheNightPack.java index c27ce0de630..8ebcc3a6c30 100644 --- a/Mage.Sets/src/mage/sets/magic2010/HowlOfTheNightPack.java +++ b/Mage.Sets/src/mage/sets/magic2010/HowlOfTheNightPack.java @@ -45,7 +45,7 @@ public class HowlOfTheNightPack extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("for each Forest you control"); static { - filter.getName().add("Forest"); + filter.getSubtype().add("Forest"); } public HowlOfTheNightPack(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/SeismicStrike.java b/Mage.Sets/src/mage/sets/magic2010/SeismicStrike.java index 2e87cc67401..69915988bf6 100644 --- a/Mage.Sets/src/mage/sets/magic2010/SeismicStrike.java +++ b/Mage.Sets/src/mage/sets/magic2010/SeismicStrike.java @@ -45,7 +45,7 @@ public class SeismicStrike extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Mountains you control"); static { - filter.getName().add("Mountain"); + filter.getSubtype().add("Mountain"); } public SeismicStrike(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2010/TendrilsOfCorruption.java b/Mage.Sets/src/mage/sets/magic2010/TendrilsOfCorruption.java index 4d9836d5de5..cbaad2bebc6 100644 --- a/Mage.Sets/src/mage/sets/magic2010/TendrilsOfCorruption.java +++ b/Mage.Sets/src/mage/sets/magic2010/TendrilsOfCorruption.java @@ -46,7 +46,7 @@ public class TendrilsOfCorruption extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Swamp you control"); static { - filter.getName().add("Swamp"); + filter.getSubtype().add("Swamp"); } public TendrilsOfCorruption(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/magic2012/DungroveElder.java b/Mage.Sets/src/mage/sets/magic2012/DungroveElder.java index 53ac1ab3d7d..743155bb586 100644 --- a/Mage.Sets/src/mage/sets/magic2012/DungroveElder.java +++ b/Mage.Sets/src/mage/sets/magic2012/DungroveElder.java @@ -30,13 +30,14 @@ package mage.sets.magic2012; import java.util.UUID; -import mage.Constants; import mage.Constants.CardType; +import mage.Constants.Duration; import mage.Constants.Rarity; +import mage.Constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; -import mage.abilities.effects.common.continious.BoostSourceEffect; +import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.filter.common.FilterControlledPermanent; @@ -47,21 +48,23 @@ import mage.filter.common.FilterControlledPermanent; */ public class DungroveElder extends CardImpl { - final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests"); + final static FilterControlledPermanent filterLands = new FilterControlledPermanent("Forests you control"); static { - filterLands.getName().add("Forest"); + filterLands.getSubtype().add("Forest"); } public DungroveElder (UUID ownerId) { super(ownerId, 171, "Dungrove Elder", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{G}"); this.expansionSetCode = "M12"; this.subtype.add("Treefolk"); + this.color.setGreen(true); this.power = new MageInt(0); this.toughness = new MageInt(0); + this.addAbility(new HexproofAbility()); - this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, new BoostSourceEffect(new PermanentsOnBattlefieldCount(filterLands), new PermanentsOnBattlefieldCount(filterLands), Constants.Duration.WhileOnBattlefield))); + this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(filterLands), Duration.EndOfGame))); } public DungroveElder (final DungroveElder card) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/Lashwrithe.java b/Mage.Sets/src/mage/sets/newphyrexia/Lashwrithe.java index b6814d9a443..f7740c39cf0 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/Lashwrithe.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/Lashwrithe.java @@ -51,7 +51,7 @@ public class Lashwrithe extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Swamp you control"); static { - filter.getName().add("Swamp"); + filter.getSubtype().add("Swamp"); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/tenth/BlanchwoodArmor.java b/Mage.Sets/src/mage/sets/tenth/BlanchwoodArmor.java index 400c13f9feb..00d75cc3116 100644 --- a/Mage.Sets/src/mage/sets/tenth/BlanchwoodArmor.java +++ b/Mage.Sets/src/mage/sets/tenth/BlanchwoodArmor.java @@ -52,7 +52,7 @@ public class BlanchwoodArmor extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Forest you control"); static { - filter.getName().add("Forest"); + filter.getSubtype().add("Forest"); } public BlanchwoodArmor(UUID ownerId) { @@ -66,8 +66,6 @@ public class BlanchwoodArmor extends CardImpl { Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); this.addAbility(new SimpleStaticAbility(Constants.Zone.BATTLEFIELD, new BoostEnchantedEffect(new PermanentsOnBattlefieldCount(filter), new PermanentsOnBattlefieldCount(filter), Constants.Duration.WhileOnBattlefield))); - // Enchant creature - // Enchanted creature gets +1/+1 for each Forest you control. } public BlanchwoodArmor(final BlanchwoodArmor card) { diff --git a/Mage.Sets/src/mage/sets/tenth/Mortivore.java b/Mage.Sets/src/mage/sets/tenth/Mortivore.java index 0988861494a..79d1d4eb918 100644 --- a/Mage.Sets/src/mage/sets/tenth/Mortivore.java +++ b/Mage.Sets/src/mage/sets/tenth/Mortivore.java @@ -44,7 +44,7 @@ import mage.filter.common.FilterCreatureCard; /** * - * @author anonymous + * @author Loki */ public class Mortivore extends CardImpl { diff --git a/Mage.Sets/src/mage/sets/tenth/Nightmare.java b/Mage.Sets/src/mage/sets/tenth/Nightmare.java index 37029d9f207..92c8fa0cd6c 100644 --- a/Mage.Sets/src/mage/sets/tenth/Nightmare.java +++ b/Mage.Sets/src/mage/sets/tenth/Nightmare.java @@ -49,7 +49,7 @@ public class Nightmare extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Swamps you control"); static { - filter.getName().add("Swamp"); + filter.getSubtype().add("Swamp"); } public Nightmare(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/tenth/SpittingEarth.java b/Mage.Sets/src/mage/sets/tenth/SpittingEarth.java index 3ba391e8319..24e78090013 100644 --- a/Mage.Sets/src/mage/sets/tenth/SpittingEarth.java +++ b/Mage.Sets/src/mage/sets/tenth/SpittingEarth.java @@ -45,7 +45,7 @@ public class SpittingEarth extends CardImpl { private final static FilterControlledPermanent filter = new FilterControlledPermanent("Mountain you control"); static { - filter.getName().add("Mountain"); + filter.getSubtype().add("Mountain"); } public SpittingEarth(UUID ownerId) { diff --git a/Mage.Sets/src/mage/sets/zendikar/PrimalBellow.java b/Mage.Sets/src/mage/sets/zendikar/PrimalBellow.java index 45adc936373..6f1614b18cb 100644 --- a/Mage.Sets/src/mage/sets/zendikar/PrimalBellow.java +++ b/Mage.Sets/src/mage/sets/zendikar/PrimalBellow.java @@ -47,7 +47,7 @@ public class PrimalBellow extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Forest you control"); static { - filter.getName().add("Forest"); + filter.getSubtype().add("Forest"); filter.setTargetController(TargetController.YOU); } diff --git a/Mage.Sets/src/mage/sets/zendikar/TimbermawLarva.java b/Mage.Sets/src/mage/sets/zendikar/TimbermawLarva.java index 00dbc45ed2d..d9bedcf945d 100644 --- a/Mage.Sets/src/mage/sets/zendikar/TimbermawLarva.java +++ b/Mage.Sets/src/mage/sets/zendikar/TimbermawLarva.java @@ -48,7 +48,7 @@ public class TimbermawLarva extends CardImpl { private static final FilterLandPermanent filter = new FilterLandPermanent("Forest you control"); static { - filter.getName().add("Forest"); + filter.getSubtype().add("Forest"); filter.setTargetController(TargetController.YOU); }