diff --git a/Mage.Sets/src/mage/sets/coldsnap/RuneSnag.java b/Mage.Sets/src/mage/sets/coldsnap/RuneSnag.java index 70bcf87ea59..31b4c09315a 100644 --- a/Mage.Sets/src/mage/sets/coldsnap/RuneSnag.java +++ b/Mage.Sets/src/mage/sets/coldsnap/RuneSnag.java @@ -45,8 +45,9 @@ import mage.target.TargetSpell; * @author emerald000 */ public class RuneSnag extends CardImpl { - + private static final FilterCard filter = new FilterCard(); + static { filter.add(new NamePredicate("Rune Snag")); } @@ -55,7 +56,6 @@ public class RuneSnag extends CardImpl { super(ownerId, 46, "Rune Snag", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{U}"); this.expansionSetCode = "CSP"; - // Counter target spell unless its controller pays {2} plus an additional {2} for each card named Rune Snag in each graveyard. Effect effect = new CounterUnlessPaysEffect(new IntPlusDynamicValue(2, new MultipliedValue(new CardsInAllGraveyardsCount(filter), 2))); effect.setText("Counter target spell unless its controller pays {2} plus an additional {2} for each card named Rune Snag in each graveyard"); diff --git a/Mage.Sets/src/mage/sets/iceage/JohtullWurm.java b/Mage.Sets/src/mage/sets/iceage/JohtullWurm.java index 345a9a1ac7a..d1fd3b5b7af 100644 --- a/Mage.Sets/src/mage/sets/iceage/JohtullWurm.java +++ b/Mage.Sets/src/mage/sets/iceage/JohtullWurm.java @@ -31,8 +31,8 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.common.BecomesBlockedTriggeredAbility; import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.dynamicvalue.common.BlockedCreatureCount; import mage.abilities.dynamicvalue.MultipliedValue; +import mage.abilities.dynamicvalue.common.BlockedCreatureCount; import mage.abilities.effects.Effect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; @@ -54,11 +54,8 @@ public class JohtullWurm extends CardImpl { this.toughness = new MageInt(6); // Whenever Johtull Wurm becomes blocked, it gets -2/-1 until end of turn for each creature blocking it beyond the first. - DynamicValue blockedCreatureCount = new BlockedCreatureCount(); - int value = Math.negateExact(Integer.parseInt(blockedCreatureCount.toString()) - 1); - int powerValue = value * 2; - - Effect effect = new BoostSourceEffect(powerValue, value, Duration.EndOfTurn); + DynamicValue blockedCreatureCount = new BlockedCreatureCount("each creature blocking it beyond the first", true); + Effect effect = new BoostSourceEffect(new MultipliedValue(blockedCreatureCount, -2), new MultipliedValue(blockedCreatureCount, -1), Duration.EndOfTurn); effect.setText("it gets -2/-1 until end of turn for each creature blocking it beyond the first"); this.addAbility(new BecomesBlockedTriggeredAbility(effect, false)); } diff --git a/Mage.Sets/src/mage/sets/mirage/JungleWurm.java b/Mage.Sets/src/mage/sets/mirage/JungleWurm.java index 947fc82784c..7a66ccdecad 100644 --- a/Mage.Sets/src/mage/sets/mirage/JungleWurm.java +++ b/Mage.Sets/src/mage/sets/mirage/JungleWurm.java @@ -30,6 +30,8 @@ package mage.sets.mirage; import java.util.UUID; import mage.MageInt; import mage.abilities.common.BecomesBlockedTriggeredAbility; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.MultipliedValue; import mage.abilities.dynamicvalue.common.BlockedCreatureCount; import mage.abilities.effects.Effect; import mage.abilities.effects.common.continuous.BoostSourceEffect; @@ -52,9 +54,8 @@ public class JungleWurm extends CardImpl { this.toughness = new MageInt(5); // Whenever Jungle Wurm becomes blocked, it gets -1/-1 until end of turn for each creature blocking it beyond the first. - BlockedCreatureCount blockedCreatureCount = new BlockedCreatureCount(); - int value = Math.negateExact(Integer.parseInt(blockedCreatureCount.toString()) - 1); - + BlockedCreatureCount blockedCreatureCount = new BlockedCreatureCount("each creature blocking it beyond the first", true); + DynamicValue value = new MultipliedValue(blockedCreatureCount, -1); Effect effect = new BoostSourceEffect(value, value, Duration.EndOfTurn); effect.setText("it gets -1/-1 until end of turn for each creature blocking it beyond the first"); this.addAbility(new BecomesBlockedTriggeredAbility(effect, false)); @@ -68,4 +69,4 @@ public class JungleWurm extends CardImpl { public JungleWurm copy() { return new JungleWurm(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/sets/ninthedition/ElvishBerserker.java b/Mage.Sets/src/mage/sets/ninthedition/ElvishBerserker.java index 6f3a35091e8..924d718d4cd 100644 --- a/Mage.Sets/src/mage/sets/ninthedition/ElvishBerserker.java +++ b/Mage.Sets/src/mage/sets/ninthedition/ElvishBerserker.java @@ -29,9 +29,7 @@ package mage.sets.ninthedition; import java.util.UUID; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.BecomesBlockedTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.BlockedCreatureCount; import mage.abilities.effects.Effect; import mage.abilities.effects.common.continuous.BoostSourceEffect; @@ -39,8 +37,6 @@ import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Rarity; -import mage.game.Game; -import mage.game.combat.CombatGroup; /** * @@ -71,4 +67,4 @@ public class ElvishBerserker extends CardImpl { public ElvishBerserker copy() { return new ElvishBerserker(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/sets/urzaslegacy/GangOfElk.java b/Mage.Sets/src/mage/sets/urzaslegacy/GangOfElk.java index ddd5f72d933..c3ccea99283 100644 --- a/Mage.Sets/src/mage/sets/urzaslegacy/GangOfElk.java +++ b/Mage.Sets/src/mage/sets/urzaslegacy/GangOfElk.java @@ -29,7 +29,6 @@ package mage.sets.urzaslegacy; import java.util.UUID; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.BecomesBlockedTriggeredAbility; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.MultipliedValue; @@ -40,8 +39,6 @@ import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Rarity; -import mage.game.Game; -import mage.game.combat.CombatGroup; /** * @@ -59,7 +56,7 @@ public class GangOfElk extends CardImpl { this.toughness = new MageInt(4); // Whenever Gang of Elk becomes blocked, it gets +2/+2 until end of turn for each creature blocking it. - DynamicValue value = new MultipliedValue(new BlockedCreatureCount(),2); + DynamicValue value = new MultipliedValue(new BlockedCreatureCount(), 2); Effect effect = new BoostSourceEffect(value, value, Duration.EndOfTurn); effect.setText("it gets +2/+2 until end of turn for each creature blocking it"); this.addAbility(new BecomesBlockedTriggeredAbility(effect, false)); @@ -73,4 +70,4 @@ public class GangOfElk extends CardImpl { public GangOfElk copy() { return new GangOfElk(this); } -} \ No newline at end of file +} diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/BlockedCreatureCount.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/BlockedCreatureCount.java index ff7a3fd15bd..78ac659e793 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/BlockedCreatureCount.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/BlockedCreatureCount.java @@ -38,27 +38,37 @@ import mage.game.combat.CombatGroup; * @author Markedagain */ public class BlockedCreatureCount implements DynamicValue { + private String message; + boolean beyondTheFirst; public BlockedCreatureCount() { this("each creature blocking it"); } public BlockedCreatureCount(String message) { + this(message, false); + } + + public BlockedCreatureCount(String message, boolean beyondTheFist) { this.message = message; } public BlockedCreatureCount(final BlockedCreatureCount dynamicValue) { super(); this.message = dynamicValue.message; + this.beyondTheFirst = dynamicValue.beyondTheFirst; } @Override public int calculate(Game game, Ability sourceAbility, Effect effect) { - for(CombatGroup combatGroup : game.getCombat().getGroups()) { - if(combatGroup.getAttackers().contains(sourceAbility.getSourceId())) { - int blockers = combatGroup.getBlockers().size(); - return blockers > 1 ? (blockers) : 0; + for (CombatGroup combatGroup : game.getCombat().getGroups()) { + if (combatGroup.getAttackers().contains(sourceAbility.getSourceId())) { + int blockers = combatGroup.getBlockers().size(); + if (beyondTheFirst) { + blockers = blockers > 0 ? blockers - 1 : 0; + } + return blockers; } } return 0;