diff --git a/Mage.Sets/src/mage/sets/darksteel/Tanglewalker.java b/Mage.Sets/src/mage/sets/darksteel/Tanglewalker.java index b2fb61b1445..ebf5a8373fa 100644 --- a/Mage.Sets/src/mage/sets/darksteel/Tanglewalker.java +++ b/Mage.Sets/src/mage/sets/darksteel/Tanglewalker.java @@ -35,7 +35,7 @@ import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DefendingPlayerControlsCondition; -import mage.abilities.decorator.ConditionalContinousEffect; +import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.Effect; import mage.abilities.effects.common.UnblockableAllEffect; import mage.cards.CardImpl; @@ -66,10 +66,10 @@ public class Tanglewalker extends CardImpl { this.toughness = new MageInt(2); // Each creature you control is unblockable as long as defending player controls an artifact land. - Effect effect = new ConditionalContinousEffect( + Effect effect = new ConditionalRestrictionEffect( new UnblockableAllEffect(new FilterControlledCreaturePermanent("Creatures you control"), Duration.WhileOnBattlefield), - new DefendingPlayerControlsCondition(filter), - "Each creature you control is unblockable as long as defending player controls an artifact land"); + new DefendingPlayerControlsCondition(filter)); + effect.setText("Each creature you control is unblockable as long as defending player controls an artifact land"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/sets/eventide/GiftOfTheDeity.java b/Mage.Sets/src/mage/sets/eventide/GiftOfTheDeity.java index 5d83ce804e5..db0d7bb1f51 100644 --- a/Mage.Sets/src/mage/sets/eventide/GiftOfTheDeity.java +++ b/Mage.Sets/src/mage/sets/eventide/GiftOfTheDeity.java @@ -33,6 +33,8 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.EnchantedCreatureColorCondition; import mage.abilities.decorator.ConditionalContinousEffect; +import mage.abilities.decorator.ConditionalRequirementEffect; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.MustBlockAttachedEffect; import mage.abilities.effects.common.continious.BoostEnchantedEffect; @@ -42,6 +44,7 @@ import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.constants.AttachmentType; import mage.constants.CardType; +import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Rarity; import mage.constants.Zone; @@ -73,8 +76,13 @@ public class GiftOfTheDeity extends CardImpl { blackAbility.addEffect(new ConditionalContinousEffect(new GainAbilityAttachedEffect(DeathtouchAbility.getInstance(), AttachmentType.AURA), new EnchantedCreatureColorCondition(ObjectColor.BLACK), "and has deathtouch")); this.addAbility(blackAbility); // As long as enchanted creature is green, it gets +1/+1 and all creatures able to block it do so. - SimpleStaticAbility greenAbility = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new BoostEnchantedEffect(1, 1), new EnchantedCreatureColorCondition(ObjectColor.GREEN), "As long as enchanted creature is green, it gets +1/+1")); - greenAbility.addEffect(new ConditionalContinousEffect(new MustBlockAttachedEffect(AttachmentType.AURA), new EnchantedCreatureColorCondition(ObjectColor.GREEN), "and all creatures able to block it do so")); + SimpleStaticAbility greenAbility = new SimpleStaticAbility(Zone.BATTLEFIELD, + new ConditionalContinousEffect(new BoostEnchantedEffect(1, 1), + new EnchantedCreatureColorCondition(ObjectColor.GREEN), + "As long as enchanted creature is green, it gets +1/+1")); + Effect effect = new ConditionalRequirementEffect(new MustBlockAttachedEffect(AttachmentType.AURA), new EnchantedCreatureColorCondition(ObjectColor.GREEN)); + effect.setText("and all creatures able to block it do so"); + greenAbility.addEffect(effect); this.addAbility(greenAbility); } diff --git a/Mage.Sets/src/mage/sets/gatecrash/WayOfTheThief.java b/Mage.Sets/src/mage/sets/gatecrash/WayOfTheThief.java index a8798671916..0654e926d3b 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/WayOfTheThief.java +++ b/Mage.Sets/src/mage/sets/gatecrash/WayOfTheThief.java @@ -37,7 +37,8 @@ import mage.constants.Zone; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.ControlsPermanentCondition; -import mage.abilities.decorator.ConditionalContinousEffect; +import mage.abilities.decorator.ConditionalRestrictionEffect; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.UnblockableAttachedEffect; import mage.abilities.effects.common.continious.BoostEnchantedEffect; @@ -59,9 +60,8 @@ public class WayOfTheThief extends CardImpl { static { filter.add(new SubtypePredicate("Gate")); - } - - private String rule = "Enchanted creature is unblockable as long as you control a Gate"; + } + private final String rule = "Enchanted creature is unblockable as long as you control a Gate"; public WayOfTheThief(UUID ownerId) { super(ownerId, 56, "Way of the Thief", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}"); @@ -81,7 +81,9 @@ public class WayOfTheThief extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield))); // Enchanted creature is unblockable as long as you control a Gate. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new UnblockableAttachedEffect(AttachmentType.AURA), new ControlsPermanentCondition(filter), rule))); + Effect effect = new ConditionalRestrictionEffect(new UnblockableAttachedEffect(AttachmentType.AURA), new ControlsPermanentCondition(filter)); + effect.setText(rule); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } public WayOfTheThief(final WayOfTheThief card) { diff --git a/Mage.Sets/src/mage/sets/innistrad/BondsOfFaith.java b/Mage.Sets/src/mage/sets/innistrad/BondsOfFaith.java index 4ad5d355c6d..22f93594eb6 100644 --- a/Mage.Sets/src/mage/sets/innistrad/BondsOfFaith.java +++ b/Mage.Sets/src/mage/sets/innistrad/BondsOfFaith.java @@ -28,20 +28,23 @@ package mage.sets.innistrad; import java.util.UUID; - -import mage.constants.*; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.condition.Condition; +import mage.abilities.condition.InvertCondition; import mage.abilities.condition.common.EquippedHasSubtypeCondition; import mage.abilities.decorator.ConditionalContinousEffect; -import mage.abilities.effects.RestrictionEffect; +import mage.abilities.decorator.ConditionalRestrictionEffect; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; +import mage.abilities.effects.common.CantAttackBlockAttachedEffect; import mage.abilities.effects.common.continious.BoostEquippedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; -import mage.game.Game; -import mage.game.permanent.Permanent; +import mage.constants.AttachmentType; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; @@ -68,7 +71,9 @@ public class BondsOfFaith extends CardImpl { // Enchanted creature gets +2/+2 as long as it's a Human. Otherwise, it can't attack or block. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new BoostEquippedEffect(2, 2), new EquippedHasSubtypeCondition("Human"), rule))); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BondsOfFaithEffect())); + Effect effect = new ConditionalRestrictionEffect(new CantAttackBlockAttachedEffect(AttachmentType.AURA), new InvertCondition(new EquippedHasSubtypeCondition("Human"))); + effect.setText("Otherwise, it can't attack or block"); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } public BondsOfFaith(final BondsOfFaith card) { @@ -80,43 +85,3 @@ public class BondsOfFaith extends CardImpl { return new BondsOfFaith(this); } } - -class BondsOfFaithEffect extends RestrictionEffect { - - private static final Condition condition = new EquippedHasSubtypeCondition("Human"); - - public BondsOfFaithEffect() { - super(Duration.WhileOnBattlefield); - staticText = "Otherwise, it can't attack or block"; - } - - public BondsOfFaithEffect(final BondsOfFaithEffect effect) { - super(effect); - } - - @Override - public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.getAttachments().contains((source.getSourceId()))) { - if (!condition.apply(game, source)) { - return true; - } - } - return false; - } - - @Override - public boolean canAttack(Game game) { - return false; - } - - @Override - public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) { - return false; - } - - @Override - public BondsOfFaithEffect copy() { - return new BondsOfFaithEffect(this); - } - -} diff --git a/Mage.Sets/src/mage/sets/magic2014/MaraudingMaulhorn.java b/Mage.Sets/src/mage/sets/magic2014/MaraudingMaulhorn.java index b8fbae62d46..c290622065f 100644 --- a/Mage.Sets/src/mage/sets/magic2014/MaraudingMaulhorn.java +++ b/Mage.Sets/src/mage/sets/magic2014/MaraudingMaulhorn.java @@ -29,11 +29,11 @@ package mage.sets.magic2014; import java.util.UUID; import mage.MageInt; -import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.ControlsPermanentCondition; -import mage.abilities.decorator.ConditionalContinousEffect; -import mage.abilities.effects.RequirementEffect; +import mage.abilities.decorator.ConditionalRequirementEffect; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.AttacksIfAbleSourceEffect; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Duration; @@ -41,8 +41,6 @@ import mage.constants.Rarity; import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.NamePredicate; -import mage.game.Game; -import mage.game.permanent.Permanent; /** * @@ -65,7 +63,12 @@ public class MaraudingMaulhorn extends CardImpl { this.toughness = new MageInt(3); // Marauding Maulhorn attacks each combat if able unless you control a creature named Advocate of the Beast. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new MaraudingMaulhornEffect())); + Effect effect = new ConditionalRequirementEffect( + new AttacksIfAbleSourceEffect(Duration.WhileOnBattlefield), + new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.FEWER_THAN, 1)); + effect.setText("{this} attacks each combat if able unless you control a creature named Advocate of the Beast"); + + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } @@ -78,46 +81,3 @@ public class MaraudingMaulhorn extends CardImpl { return new MaraudingMaulhorn(this); } } - -class MaraudingMaulhornEffect extends RequirementEffect { - - private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature named Advocate of the Beast"); - static { - filter.add(new NamePredicate("Advocate of the Beast")); - } - - public MaraudingMaulhornEffect() { - super(Duration.WhileOnBattlefield); - staticText = "{this} attacks each combat if able unless you control a creature named Advocate of the Beast"; - } - - public MaraudingMaulhornEffect(final MaraudingMaulhornEffect effect) { - super(effect); - } - - @Override - public MaraudingMaulhornEffect copy() { - return new MaraudingMaulhornEffect(this); - } - - @Override - public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.getId().equals(source.getSourceId())) { - if (new ControlsPermanentCondition(filter, ControlsPermanentCondition.CountType.FEWER_THAN, 1).apply(game, source)) { - return true; - } - } - return false; - } - - @Override - public boolean mustAttack(Game game) { - return true; - } - - @Override - public boolean mustBlock(Game game) { - return false; - } - -} diff --git a/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java b/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java index b896d09371a..5216b318688 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java +++ b/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java @@ -28,17 +28,16 @@ package mage.sets.mirrodin; 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.condition.common.DefendingPlayerControlsCondition; -import mage.abilities.decorator.ConditionalContinousEffect; +import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.Effect; import mage.abilities.effects.common.UnblockableSourceEffect; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; import mage.filter.common.FilterArtifactPermanent; /** @@ -57,10 +56,10 @@ public class NeurokSpy extends CardImpl { this.toughness = new MageInt(2); //Neurok Spy is unblockable as long as defending player controls an artifact. - Effect effect = new ConditionalContinousEffect( + Effect effect = new ConditionalRestrictionEffect( new UnblockableSourceEffect(), - new DefendingPlayerControlsCondition(new FilterArtifactPermanent()), - "{this} is unblockable as long as defending player controls an artifact"); + new DefendingPlayerControlsCondition(new FilterArtifactPermanent())); + effect.setText("{this} is unblockable as long as defending player controls an artifact"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/sets/prophecy/HazyHomunculus.java b/Mage.Sets/src/mage/sets/prophecy/HazyHomunculus.java index c935d45b813..e532ee6588e 100644 --- a/Mage.Sets/src/mage/sets/prophecy/HazyHomunculus.java +++ b/Mage.Sets/src/mage/sets/prophecy/HazyHomunculus.java @@ -34,7 +34,7 @@ import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DefendingPlayerControlsCondition; -import mage.abilities.decorator.ConditionalContinousEffect; +import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.Effect; import mage.abilities.effects.common.UnblockableSourceEffect; import mage.cards.CardImpl; @@ -66,10 +66,10 @@ public class HazyHomunculus extends CardImpl { this.toughness = new MageInt(1); // Hazy Homunculus is unblockable as long as defending player controls an untapped land. - Effect effect = new ConditionalContinousEffect( + Effect effect = new ConditionalRestrictionEffect( new UnblockableSourceEffect(), - new DefendingPlayerControlsCondition(filter), - "{this} is unblockable as long as defending player controls an untapped land"); + new DefendingPlayerControlsCondition(filter)); + effect.setText("{this} is unblockable as long as defending player controls an untapped land"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/ScrapdiverSerpent.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/ScrapdiverSerpent.java index 9e6ba06af99..975e0d758ba 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/ScrapdiverSerpent.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/ScrapdiverSerpent.java @@ -36,7 +36,7 @@ import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DefendingPlayerControlsCondition; -import mage.abilities.decorator.ConditionalContinousEffect; +import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.Effect; import mage.abilities.effects.common.UnblockableSourceEffect; import mage.cards.CardImpl; @@ -57,10 +57,10 @@ public class ScrapdiverSerpent extends CardImpl { this.toughness = new MageInt(5); // Scrapdiver Serpent is unblockable as long as defending player controls an artifact - Effect effect = new ConditionalContinousEffect( + Effect effect = new ConditionalRestrictionEffect( new UnblockableSourceEffect(), - new DefendingPlayerControlsCondition(new FilterArtifactPermanent()), - "{this} is unblockable as long as defending player controls an artifact"); + new DefendingPlayerControlsCondition(new FilterArtifactPermanent())); + effect.setText("{this} is unblockable as long as defending player controls an artifact"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/SnapsailGlider.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/SnapsailGlider.java index 4cf4e701fc2..ebbb612c779 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/SnapsailGlider.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/SnapsailGlider.java @@ -49,7 +49,7 @@ import java.util.UUID; */ public class SnapsailGlider extends CardImpl { - protected static String text = "Metalcraft - Snapsail Glider has flying as long as you control three or more artifacts"; + protected static String rule = "Metalcraft - Snapsail Glider has flying as long as you control three or more artifacts"; public SnapsailGlider (UUID ownerId) { super(ownerId, 203, "Snapsail Glider", Rarity.COMMON, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}"); @@ -58,7 +58,7 @@ public class SnapsailGlider extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); ContinuousEffect effect = new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(effect, MetalcraftCondition.getInstance(), text))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(effect, MetalcraftCondition.getInstance(), rule))); } public SnapsailGlider (final SnapsailGlider card) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/SteelOfTheGodhead.java b/Mage.Sets/src/mage/sets/shadowmoor/SteelOfTheGodhead.java index 13036e522bc..7bbd1fdd98b 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/SteelOfTheGodhead.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/SteelOfTheGodhead.java @@ -33,7 +33,10 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.EnchantedCreatureColorCondition; import mage.abilities.decorator.ConditionalContinousEffect; +import mage.abilities.decorator.ConditionalRestrictionEffect; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; +import mage.abilities.effects.common.UnblockableAttachedEffect; import mage.abilities.effects.common.continious.BoostEnchantedEffect; import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.keyword.EnchantAbility; @@ -74,7 +77,9 @@ public class SteelOfTheGodhead extends CardImpl { this.addAbility(whiteAbility); // As long as enchanted creature is blue, it gets +1/+1 and is unblockable. SimpleStaticAbility blueAbility = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinousEffect(new BoostEnchantedEffect(1, 1), new EnchantedCreatureColorCondition(ObjectColor.BLUE), "As long as enchanted creature is blue, it gets +1/+1")); - blueAbility.addEffect(new ConditionalContinousEffect(new GainAbilityAttachedEffect(new UnblockableAbility(), AttachmentType.AURA), new EnchantedCreatureColorCondition(ObjectColor.BLUE), "and is unblockable")); + Effect effect = new ConditionalRestrictionEffect(new UnblockableAttachedEffect(AttachmentType.AURA), new EnchantedCreatureColorCondition(ObjectColor.BLUE)); + effect.setText("and is unblockable"); + blueAbility.addEffect(effect); this.addAbility(blueAbility); } diff --git a/Mage.Sets/src/mage/sets/urzasdestiny/BubblingBeebles.java b/Mage.Sets/src/mage/sets/urzasdestiny/BubblingBeebles.java index 3423dd95100..28aa226e739 100644 --- a/Mage.Sets/src/mage/sets/urzasdestiny/BubblingBeebles.java +++ b/Mage.Sets/src/mage/sets/urzasdestiny/BubblingBeebles.java @@ -34,7 +34,7 @@ import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DefendingPlayerControlsCondition; -import mage.abilities.decorator.ConditionalContinousEffect; +import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.Effect; import mage.abilities.effects.common.UnblockableSourceEffect; import mage.cards.CardImpl; @@ -48,7 +48,6 @@ import mage.filter.predicate.mageobject.CardTypePredicate; public class BubblingBeebles extends CardImpl { private static final FilterPermanent filter = new FilterPermanent(); - static { filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); } @@ -62,10 +61,10 @@ public class BubblingBeebles extends CardImpl { this.toughness = new MageInt(3); // Bubbling Beebles is unblockable as long as defending player controls an enchantment. - Effect effect = new ConditionalContinousEffect( + Effect effect = new ConditionalRestrictionEffect( new UnblockableSourceEffect(), - new DefendingPlayerControlsCondition(filter), - "{this} is unblockable as long as defending player controls an enchantment"); + new DefendingPlayerControlsCondition(filter)); + effect.setText("{this} is unblockable as long as defending player controls an enchantment"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/sets/urzaslegacy/BouncingBeebles.java b/Mage.Sets/src/mage/sets/urzaslegacy/BouncingBeebles.java index 22081455c23..d0861ddb15c 100644 --- a/Mage.Sets/src/mage/sets/urzaslegacy/BouncingBeebles.java +++ b/Mage.Sets/src/mage/sets/urzaslegacy/BouncingBeebles.java @@ -35,7 +35,7 @@ import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DefendingPlayerControlsCondition; -import mage.abilities.decorator.ConditionalContinousEffect; +import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.Effect; import mage.abilities.effects.common.UnblockableSourceEffect; import mage.cards.CardImpl; @@ -56,10 +56,10 @@ public class BouncingBeebles extends CardImpl { this.toughness = new MageInt(2); //Bouncing Beebles is unblockable as long as defending player controls an artifact. - Effect effect = new ConditionalContinousEffect( + Effect effect = new ConditionalRestrictionEffect( new UnblockableSourceEffect(), - new DefendingPlayerControlsCondition(new FilterArtifactPermanent()), - "{this} is unblockable as long as defending player controls an artifact"); + new DefendingPlayerControlsCondition(new FilterArtifactPermanent())); + effect.setText("{this} is unblockable as long as defending player controls an artifact"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); }