diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/MagicAbility.java b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/MagicAbility.java index eb6857f6ccf..fbe9709b158 100644 --- a/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/MagicAbility.java +++ b/Mage.Server.Plugins/Mage.Player.AI.MA/src/mage/player/ai/ma/MagicAbility.java @@ -32,7 +32,7 @@ public class MagicAbility { put(ShroudAbility.getInstance().getRule(), 60); put(new SwampwalkAbility().getRule(), 10); put(TrampleAbility.getInstance().getRule(), 30); - put(new UnblockableAbility().getRule(), 100); + put(new CantBeBlockedSourceAbility().getRule(), 100); put(VigilanceAbility.getInstance().getRule(), 20); put(WitherAbility.getInstance().getRule(), 30); // gatecrash diff --git a/Mage.Sets/src/mage/sets/alarareborn/GlassdustHulk.java b/Mage.Sets/src/mage/sets/alarareborn/GlassdustHulk.java index 8c0ca6ed1e6..c70cc725c2e 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/GlassdustHulk.java +++ b/Mage.Sets/src/mage/sets/alarareborn/GlassdustHulk.java @@ -36,7 +36,7 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldControlledTriggeredAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.keyword.CyclingAbility; import mage.cards.CardImpl; @@ -68,10 +68,10 @@ public class GlassdustHulk extends CardImpl { this.power = new MageInt(3); this.toughness = new MageInt(4); - // Whenever another artifact enters the battlefield under your control, Glassdust Hulk gets +1/+1 until end of turn and is unblockable this turn. + // Whenever another artifact enters the battlefield under your control, Glassdust Hulk gets +1/+1 until end of turn and can't be blocked this turn. Ability ability = new EntersBattlefieldControlledTriggeredAbility(new BoostSourceEffect(1, 1, Duration.EndOfTurn), filter, - "Whenever another artifact enters the battlefield under your control, Glassdust Hulk gets +1/+1 until end of turn and is unblockable this turn."); - ability.addEffect(new UnblockableSourceEffect(Duration.EndOfTurn)); + "Whenever another artifact enters the battlefield under your control, Glassdust Hulk gets +1/+1 until end of turn and can't be blocked this turn."); + ability.addEffect(new CantBeBlockedSourceEffect(Duration.EndOfTurn)); this.addAbility(ability); this.addAbility(new CyclingAbility(new ManaCostsImpl("{W/U}"))); diff --git a/Mage.Sets/src/mage/sets/avacynrestored/Ghostform.java b/Mage.Sets/src/mage/sets/avacynrestored/Ghostform.java index 03cb349ec82..8e41048aea8 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/Ghostform.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/Ghostform.java @@ -28,7 +28,7 @@ package mage.sets.avacynrestored; import java.util.UUID; -import mage.abilities.effects.common.combat.UnblockableTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; @@ -46,8 +46,8 @@ public class Ghostform extends CardImpl { this.color.setBlue(true); - // Up to two target creatures are unblockable this turn. - this.getSpellAbility().addEffect(new UnblockableTargetEffect()); + // Up to two target creatures can't be blocked this turn.. + this.getSpellAbility().addEffect(new CantBeBlockedTargetEffect()); this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2)); } diff --git a/Mage.Sets/src/mage/sets/avacynrestored/LatchSeeker.java b/Mage.Sets/src/mage/sets/avacynrestored/LatchSeeker.java index 70d516fbcc2..efd8006caea 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/LatchSeeker.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/LatchSeeker.java @@ -31,7 +31,7 @@ import java.util.UUID; import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; /** @@ -49,8 +49,8 @@ public class LatchSeeker extends CardImpl { this.power = new MageInt(3); this.toughness = new MageInt(1); - // Latch Seeker is unblockable. - this.addAbility(new UnblockableAbility()); + // Latch Seeker can't be blocked. + this.addAbility(new CantBeBlockedSourceAbility()); } public LatchSeeker(final LatchSeeker card) { diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/HigureTheStillWind.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/HigureTheStillWind.java index ba353701c2e..3f7ba9b874c 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/HigureTheStillWind.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/HigureTheStillWind.java @@ -37,7 +37,7 @@ import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.common.combat.UnblockableTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect; import mage.abilities.keyword.NinjutsuAbility; import mage.cards.CardImpl; @@ -77,8 +77,8 @@ public class HigureTheStillWind extends CardImpl { // Whenever Higure, the Still Wind deals combat damage to a player, you may search your library for a Ninja card, reveal it, and put it into your hand. If you do, shuffle your library. this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new SearchLibraryPutInHandEffect(new TargetCardInLibrary(filter)), true)); - // {2}: Target Ninja creature is unblockable this turn. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UnblockableTargetEffect(), new GenericManaCost(2)); + // {2}: Target Ninja creature can't be blocked this turn. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CantBeBlockedTargetEffect(), new GenericManaCost(2)); ability.addTarget(new TargetCreaturePermanent(filterCreature)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/MinamoSightbender.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/MinamoSightbender.java index 0c4e885adf8..b9f63990724 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/MinamoSightbender.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/MinamoSightbender.java @@ -37,7 +37,7 @@ import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.Effect; -import mage.abilities.effects.common.combat.UnblockableTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.cards.CardImpl; import mage.constants.Zone; import mage.filter.Filter; @@ -64,8 +64,8 @@ public class MinamoSightbender extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - // {X}, {T}: Target creature with power X or less is unblockable this turn. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UnblockableTargetEffect(), new ManaCostsImpl("{X}")); + // {X}, {T}: Target creature with power X or less can't be blocked this turn. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CantBeBlockedTargetEffect(), new ManaCostsImpl("{X}")); Target target = new TargetCreaturePermanent(filter); ability.addTarget(target); ability.addCost(new TapSourceCost()); @@ -77,7 +77,7 @@ public class MinamoSightbender extends CardImpl { public void adjustTargets(Ability ability, Game game) { if (ability instanceof SimpleActivatedAbility) { for (Effect effect :ability.getEffects()) { - if (effect instanceof UnblockableTargetEffect) { + if (effect instanceof CantBeBlockedTargetEffect) { int manaX = ability.getManaCostsToPay().getX(); ability.getTargets().clear(); FilterCreaturePermanent newFilter = new FilterCreaturePermanent(new StringBuilder("creature with power ").append(manaX).append(" or less").toString()); diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/OgreMarauder.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/OgreMarauder.java index 510fefef29a..8f77fda03b9 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/OgreMarauder.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/OgreMarauder.java @@ -36,7 +36,7 @@ import mage.abilities.costs.Cost; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Duration; @@ -62,7 +62,7 @@ public class OgreMarauder extends CardImpl { this.power = new MageInt(3); this.toughness = new MageInt(1); - // Whenever Ogre Marauder attacks, it gains "Ogre Marauder is unblockable" until end of turn unless defending player sacrifices a creature. + // Whenever Ogre Marauder attacks, it gains "Ogre Marauder can't be blocked" until end of turn unless defending player sacrifices a creature. this.addAbility(new AttacksTriggeredAbility(new OgreMarauderEffect(), false)); } @@ -80,7 +80,7 @@ class OgreMarauderEffect extends OneShotEffect { public OgreMarauderEffect() { super(Outcome.Benefit); - this.staticText = "it gains \"{this} is unblockable\" until end of turn unless defending player sacrifices a creature"; + this.staticText = "it gains \"{this} can't be blocked\" until end of turn unless defending player sacrifices a creature"; } public OgreMarauderEffect(final OgreMarauderEffect effect) { @@ -100,10 +100,10 @@ class OgreMarauderEffect extends OneShotEffect { if (defender != null && sourceObject != null) { Cost cost = new SacrificeTargetCost(new TargetControlledCreaturePermanent()); if (cost.canPay(source, source.getSourceId(), defendingPlayerId, game) && - defender.chooseUse(Outcome.LoseAbility, "Sacrifice a creature to prevent " + sourceObject.getLogName() + " from getting unblockable?", game)) { + defender.chooseUse(Outcome.LoseAbility, "Sacrifice a creature to prevent that " + sourceObject.getLogName() + " can't be blocked?", game)) { if (!cost.pay(source, game, source.getSourceId(), defendingPlayerId, false)) { - // cost was not payed - so source gets unblockable - ContinuousEffect effect = new UnblockableSourceEffect(Duration.EndOfTurn); + // cost was not payed - so source can't be blocked + ContinuousEffect effect = new CantBeBlockedSourceEffect(Duration.EndOfTurn); game.addEffect(effect, source); } } diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/VeilOfSecrecy.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/VeilOfSecrecy.java index f17de366bf4..a7b0c1e3297 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/VeilOfSecrecy.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/VeilOfSecrecy.java @@ -31,7 +31,7 @@ import java.util.UUID; import mage.ObjectColor; import mage.abilities.costs.common.ReturnToHandTargetCost; import mage.abilities.effects.Effect; -import mage.abilities.effects.common.combat.UnblockableTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.keyword.ShroudAbility; import mage.abilities.keyword.SpliceOntoArcaneAbility; @@ -61,13 +61,13 @@ public class VeilOfSecrecy extends CardImpl { this.expansionSetCode = "BOK"; this.subtype.add("Arcane"); - // Target creature gains shroud until end of turn and is unblockable this turn. + // Target creature gains shroud until end of turn and is can't be blocked this turn. Effect effect = new GainAbilityTargetEffect(ShroudAbility.getInstance(), Duration.EndOfTurn); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); effect.setText("Target creature gains shroud until end of turn"); this.getSpellAbility().addEffect(effect); - effect = new UnblockableTargetEffect(); - effect.setText("and is unblockable this turn"); + effect = new CantBeBlockedTargetEffect(); + effect.setText("and can't be blocked this turn"); this.getSpellAbility().addEffect(effect); // Splice onto Arcane-Return a blue creature you control to its owner's hand. diff --git a/Mage.Sets/src/mage/sets/bornofthegods/FearsomeTemper.java b/Mage.Sets/src/mage/sets/bornofthegods/FearsomeTemper.java index e974ba93c01..5f4e6ae4a9a 100644 --- a/Mage.Sets/src/mage/sets/bornofthegods/FearsomeTemper.java +++ b/Mage.Sets/src/mage/sets/bornofthegods/FearsomeTemper.java @@ -35,7 +35,6 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.combat.CantBeBlockedByTargetSourceEffect; -import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.abilities.effects.common.continuous.BoostEnchantedEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EnchantAbility; diff --git a/Mage.Sets/src/mage/sets/bornofthegods/FlitterstepEidolon.java b/Mage.Sets/src/mage/sets/bornofthegods/FlitterstepEidolon.java index 63ae4347a09..3c4f44144f3 100644 --- a/Mage.Sets/src/mage/sets/bornofthegods/FlitterstepEidolon.java +++ b/Mage.Sets/src/mage/sets/bornofthegods/FlitterstepEidolon.java @@ -31,10 +31,10 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.common.combat.UnblockableAttachedEffect; +import mage.abilities.effects.common.combat.CantBeBlockedAttachedEffect; import mage.abilities.effects.common.continuous.BoostEnchantedEffect; import mage.abilities.keyword.BestowAbility; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; import mage.constants.AttachmentType; import mage.constants.CardType; @@ -60,10 +60,10 @@ public class FlitterstepEidolon extends CardImpl { // Bestow {5}{U} this.addAbility(new BestowAbility(this, "{5}{U}")); // Flitterstep Eidolon can't be blocked. - this.addAbility(new UnblockableAbility()); + this.addAbility(new CantBeBlockedSourceAbility()); // Enchanted creature gets +1/+1 and can't be blocked. Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1,1, Duration.WhileOnBattlefield)); - ability.addEffect(new UnblockableAttachedEffect(AttachmentType.AURA)); + ability.addEffect(new CantBeBlockedAttachedEffect(AttachmentType.AURA)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorGuard.java b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorGuard.java index daf34e3c2b6..7f3a9ed4efe 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorGuard.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/SoratamiMirrorGuard.java @@ -37,7 +37,7 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.ReturnToHandTargetCost; import mage.abilities.costs.mana.GenericManaCost; -import mage.abilities.effects.common.combat.UnblockableTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.filter.Filter; @@ -72,8 +72,8 @@ public class SoratamiMirrorGuard extends CardImpl { // Flying this.addAbility(FlyingAbility.getInstance()); - // {2}, Return a land you control to its owner's hand: Target creature with power 2 or less is unblockable this turn. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UnblockableTargetEffect(), new GenericManaCost(2)); + // {2}, Return a land you control to its owner's hand: Target creature with power 2 or less can't be blocked this turn. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CantBeBlockedTargetEffect(), new GenericManaCost(2)); ability.addCost(new ReturnToHandTargetCost(new TargetControlledPermanent(filter))); ability.addTarget(new TargetCreaturePermanent(filterCreature)); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/sets/commander2013/AzoriusHerald.java b/Mage.Sets/src/mage/sets/commander2013/AzoriusHerald.java index 20226aef318..75ceee5ee0c 100644 --- a/Mage.Sets/src/mage/sets/commander2013/AzoriusHerald.java +++ b/Mage.Sets/src/mage/sets/commander2013/AzoriusHerald.java @@ -33,7 +33,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.condition.common.ManaWasSpentCondition; import mage.abilities.effects.common.GainLifeEffect; import mage.abilities.effects.common.SacrificeSourceUnlessConditionEffect; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.ColoredManaSymbol; @@ -56,7 +56,7 @@ public class AzoriusHerald extends CardImpl { this.toughness = new MageInt(1); // Azorius Herald can't be blocked. - this.addAbility(new UnblockableAbility()); + this.addAbility(new CantBeBlockedSourceAbility()); // When Azorius Herald enters the battlefield, you gain 4 life. this.addAbility(new EntersBattlefieldTriggeredAbility(new GainLifeEffect(4))); // When Azorius Herald enters the battlefield, sacrifice it unless {U} was spent to cast it. diff --git a/Mage.Sets/src/mage/sets/conflux/JhessianBalmgiver.java b/Mage.Sets/src/mage/sets/conflux/JhessianBalmgiver.java index b54954aac5e..6f7462b77ed 100644 --- a/Mage.Sets/src/mage/sets/conflux/JhessianBalmgiver.java +++ b/Mage.Sets/src/mage/sets/conflux/JhessianBalmgiver.java @@ -38,7 +38,7 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.effects.common.PreventDamageToTargetEffect; -import mage.abilities.effects.common.combat.UnblockableTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.cards.CardImpl; import mage.target.common.TargetCreatureOrPlayer; import mage.target.common.TargetCreaturePermanent; @@ -64,8 +64,8 @@ public class JhessianBalmgiver extends CardImpl { Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PreventDamageToTargetEffect(Duration.EndOfTurn, 1), new TapSourceCost()); ability.addTarget(new TargetCreatureOrPlayer()); this.addAbility(ability); - // {tap}: Target creature is unblockable this turn. - ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UnblockableTargetEffect(), new TapSourceCost()); + // {tap}: Target creature can't be blocked this turn. + ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CantBeBlockedTargetEffect(), new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/conflux/VectisAgents.java b/Mage.Sets/src/mage/sets/conflux/VectisAgents.java index 38d6994e278..9ed49185776 100644 --- a/Mage.Sets/src/mage/sets/conflux/VectisAgents.java +++ b/Mage.Sets/src/mage/sets/conflux/VectisAgents.java @@ -37,7 +37,7 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; @@ -57,11 +57,11 @@ public class VectisAgents extends CardImpl { this.power = new MageInt(4); this.toughness = new MageInt(3); - // {U}{B}: Vectis Agents gets -2/-0 until end of turn and is unblockable this turn. + // {U}{B}: Vectis Agents gets -2/-0 until end of turn and can't be blocked this turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(-2, -0, Duration.EndOfTurn), new ManaCostsImpl("{U}{B}")); - ability.addEffect(new UnblockableSourceEffect(Duration.EndOfTurn)); + ability.addEffect(new CantBeBlockedSourceEffect(Duration.EndOfTurn)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/conspiracy/MarchesasSmuggler.java b/Mage.Sets/src/mage/sets/conspiracy/MarchesasSmuggler.java index fc4f9263bc1..4404a75ad89 100644 --- a/Mage.Sets/src/mage/sets/conspiracy/MarchesasSmuggler.java +++ b/Mage.Sets/src/mage/sets/conspiracy/MarchesasSmuggler.java @@ -56,8 +56,6 @@ public class MarchesasSmuggler extends CardImpl { this.subtype.add("Human"); this.subtype.add("Rogue"); - this.color.setRed(true); - this.color.setBlue(true); this.power = new MageInt(1); this.toughness = new MageInt(1); diff --git a/Mage.Sets/src/mage/sets/darkascension/ArtfulDodge.java b/Mage.Sets/src/mage/sets/darkascension/ArtfulDodge.java index af9dcc56f3f..019faf72767 100644 --- a/Mage.Sets/src/mage/sets/darkascension/ArtfulDodge.java +++ b/Mage.Sets/src/mage/sets/darkascension/ArtfulDodge.java @@ -32,7 +32,7 @@ import mage.constants.CardType; import mage.constants.Rarity; import mage.constants.TimingRule; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.common.combat.UnblockableTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.abilities.keyword.FlashbackAbility; import mage.cards.CardImpl; import mage.target.common.TargetCreaturePermanent; @@ -49,8 +49,8 @@ public class ArtfulDodge extends CardImpl { this.color.setBlue(true); - // Target creature is unblockable this turn. - this.getSpellAbility().addEffect(new UnblockableTargetEffect()); + // Target creature can't be blocked this turn. + this.getSpellAbility().addEffect(new CantBeBlockedTargetEffect()); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); // Flashback {U} this.addAbility(new FlashbackAbility(new ManaCostsImpl("{U}"), TimingRule.SORCERY)); diff --git a/Mage.Sets/src/mage/sets/darksteel/Spincrusher.java b/Mage.Sets/src/mage/sets/darksteel/Spincrusher.java index a19d13ae1cb..6a4cbca7c79 100644 --- a/Mage.Sets/src/mage/sets/darksteel/Spincrusher.java +++ b/Mage.Sets/src/mage/sets/darksteel/Spincrusher.java @@ -38,7 +38,7 @@ import mage.MageInt; import mage.abilities.common.BlocksTriggeredAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.RemoveCountersSourceCost; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.counters.CounterType; @@ -57,9 +57,9 @@ public class Spincrusher extends CardImpl { // Whenever Spincrusher blocks, put a +1/+1 counter on it. this.addAbility(new BlocksTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false)); - // Remove a +1/+1 counter from Spincrusher: Spincrusher is unblockable this turn. + // Remove a +1/+1 counter from Spincrusher: Spincrusher can't be blocked this turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, - new UnblockableSourceEffect(Duration.EndOfTurn), + new CantBeBlockedSourceEffect(Duration.EndOfTurn), new RemoveCountersSourceCost(CounterType.P1P1.createInstance(1)))); } diff --git a/Mage.Sets/src/mage/sets/darksteel/Tanglewalker.java b/Mage.Sets/src/mage/sets/darksteel/Tanglewalker.java index e2695220cf4..ab629357d51 100644 --- a/Mage.Sets/src/mage/sets/darksteel/Tanglewalker.java +++ b/Mage.Sets/src/mage/sets/darksteel/Tanglewalker.java @@ -37,7 +37,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DefendingPlayerControlsCondition; import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.Effect; -import mage.abilities.effects.common.combat.UnblockableAllEffect; +import mage.abilities.effects.common.combat.CantBeBlockedAllEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledCreaturePermanent; @@ -65,11 +65,11 @@ public class Tanglewalker extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - // Each creature you control is unblockable as long as defending player controls an artifact land. + // Each creature you control can't be blocked as long as defending player controls an artifact land. Effect effect = new ConditionalRestrictionEffect( - new UnblockableAllEffect(new FilterControlledCreaturePermanent("Creatures you control"), Duration.WhileOnBattlefield), + new CantBeBlockedAllEffect(new FilterControlledCreaturePermanent("Creatures you control"), Duration.WhileOnBattlefield), new DefendingPlayerControlsCondition(filter)); - effect.setText("Each creature you control is unblockable as long as defending player controls an artifact land"); + effect.setText("Each creature you control can't be blocked as long as defending player controls an artifact land"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/AEtherling.java b/Mage.Sets/src/mage/sets/dragonsmaze/AEtherling.java index 6e646e7e83a..542e122c00e 100644 --- a/Mage.Sets/src/mage/sets/dragonsmaze/AEtherling.java +++ b/Mage.Sets/src/mage/sets/dragonsmaze/AEtherling.java @@ -41,7 +41,7 @@ import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbil import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.ReturnFromExileEffect; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; import mage.game.Game; @@ -66,8 +66,8 @@ public class AEtherling extends CardImpl { // {U}: Exile AEtherling. Return it to the battlefield under its owner's control at the beginning of the next end step. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new AEherlingRemovingEffect(), new ManaCostsImpl("{U}"))); - // {U}: AEtherling is unblockable this turn - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new UnblockableSourceEffect(), new ManaCostsImpl("{U}"))); + // {U}: AEtherling can't be blocked this turn + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CantBeBlockedSourceEffect(), new ManaCostsImpl("{U}"))); // {1}: AEtherling gets +1/-1 until end of turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, -1, Duration.EndOfTurn), new ManaCostsImpl("{1}"))); // {1}: AEtherling gets -1/+1 until end of turn diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/GudulLurker.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/GudulLurker.java index 11b83da98ac..45669a56e94 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/GudulLurker.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/GudulLurker.java @@ -31,7 +31,7 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.keyword.MorphAbility; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; @@ -50,7 +50,7 @@ public class GudulLurker extends CardImpl { this.toughness = new MageInt(1); // Gudul Lurker can't be blocked. - this.addAbility(new UnblockableAbility()); + this.addAbility(new CantBeBlockedSourceAbility()); // Megamorph {U} this.addAbility(new MorphAbility(this, new ManaCostsImpl("{U}"), true)); diff --git a/Mage.Sets/src/mage/sets/eventide/RiverfallMimic.java b/Mage.Sets/src/mage/sets/eventide/RiverfallMimic.java index 0f245f27340..43def6c29ad 100644 --- a/Mage.Sets/src/mage/sets/eventide/RiverfallMimic.java +++ b/Mage.Sets/src/mage/sets/eventide/RiverfallMimic.java @@ -34,7 +34,7 @@ import mage.abilities.Ability; import mage.abilities.common.SpellCastControllerTriggeredAbility; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Duration; @@ -70,7 +70,7 @@ public class RiverfallMimic extends CardImpl { // Whenever you cast a spell that's both blue and red, Riverfall Mimic has base power and toughness 3/3 until end of turn and can't be blocked this turn. Ability ability = new SpellCastControllerTriggeredAbility(new SetPowerToughnessSourceEffect(3, 3, Duration.EndOfTurn), filter, false, rule); - ability.addEffect(new GainAbilitySourceEffect(new UnblockableAbility(), Duration.EndOfTurn, false, true)); + ability.addEffect(new GainAbilitySourceEffect(new CantBeBlockedSourceAbility(), Duration.EndOfTurn, false, true)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/fatereforged/JeskaiInfiltrator.java b/Mage.Sets/src/mage/sets/fatereforged/JeskaiInfiltrator.java index b623bea79a1..30aea7685ea 100644 --- a/Mage.Sets/src/mage/sets/fatereforged/JeskaiInfiltrator.java +++ b/Mage.Sets/src/mage/sets/fatereforged/JeskaiInfiltrator.java @@ -42,7 +42,7 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.abilities.effects.common.continuous.BecomesFaceDownCreatureEffect; import mage.abilities.effects.common.continuous.BecomesFaceDownCreatureEffect.FaceDownType; import mage.cards.Card; @@ -71,7 +71,7 @@ public class JeskaiInfiltrator extends CardImpl { this.toughness = new MageInt(3); // Jeskai Infiltrator can't be blocked as long as you control no other creatures. - Effect effect = new ConditionalRestrictionEffect(new UnblockableSourceEffect(), new OneControlledCreatureCondition()); + Effect effect = new ConditionalRestrictionEffect(new CantBeBlockedSourceEffect(), new OneControlledCreatureCondition()); effect.setText("{this} can't be blocked as long as you control no other creatures"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); diff --git a/Mage.Sets/src/mage/sets/fatereforged/MarangRiverProwler.java b/Mage.Sets/src/mage/sets/fatereforged/MarangRiverProwler.java index cea8fe563ce..5c4ddec9a43 100644 --- a/Mage.Sets/src/mage/sets/fatereforged/MarangRiverProwler.java +++ b/Mage.Sets/src/mage/sets/fatereforged/MarangRiverProwler.java @@ -35,7 +35,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.AsThoughEffectImpl; import mage.abilities.effects.Effect; import mage.abilities.effects.common.combat.CantBlockSourceEffect; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.constants.AsThoughEffectType; @@ -65,7 +65,7 @@ public class MarangRiverProwler extends CardImpl { // Marang River Prowler can't block and can't be blocked. Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBlockSourceEffect(Duration.WhileOnBattlefield)); - Effect effect = new UnblockableSourceEffect(); + Effect effect = new CantBeBlockedSourceEffect(); effect.setText("and can't be blocked"); ability.addEffect(effect); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/sets/fifthdawn/PlasmaElemental.java b/Mage.Sets/src/mage/sets/fifthdawn/PlasmaElemental.java index 707694d2bfb..3f12fa5ed43 100644 --- a/Mage.Sets/src/mage/sets/fifthdawn/PlasmaElemental.java +++ b/Mage.Sets/src/mage/sets/fifthdawn/PlasmaElemental.java @@ -30,7 +30,7 @@ package mage.sets.fifthdawn; import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; @@ -51,8 +51,8 @@ public class PlasmaElemental extends CardImpl { this.power = new MageInt(4); this.toughness = new MageInt(1); - // Plasma Elemental is unblockable. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new UnblockableSourceEffect())); + // Plasma Elemental can't be blocked. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedSourceEffect())); } public PlasmaElemental(final PlasmaElemental card) { diff --git a/Mage.Sets/src/mage/sets/gatecrash/DimirKeyrune.java b/Mage.Sets/src/mage/sets/gatecrash/DimirKeyrune.java index 8b58d82eab2..a2775126c14 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/DimirKeyrune.java +++ b/Mage.Sets/src/mage/sets/gatecrash/DimirKeyrune.java @@ -36,7 +36,7 @@ import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.BlueManaAbility; import mage.cards.CardImpl; @@ -56,7 +56,7 @@ public class DimirKeyrune extends CardImpl { this.addAbility(new BlueManaAbility()); this.addAbility(new BlackManaAbility()); - // {U}{B}: Dimir Keyrune becomes a 2/2 blue and black Horror and is unblockable this turn + // {U}{B}: Dimir Keyrune becomes a 2/2 blue and black Horror and can't be blocked this turn this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new DimirKeyruneToken(), "", Duration.EndOfTurn), new ManaCostsImpl("{U}{B}"))); } @@ -71,7 +71,7 @@ public class DimirKeyrune extends CardImpl { private class DimirKeyruneToken extends Token { DimirKeyruneToken() { - super("Horror", "2/2 blue and black Horror until end of turn and is unblockable this turn"); + super("Horror", "2/2 blue and black Horror until end of turn and can't be blocked this turn"); cardType.add(CardType.ARTIFACT); cardType.add(CardType.CREATURE); color.setBlue(true); @@ -79,7 +79,7 @@ public class DimirKeyrune extends CardImpl { subtype.add("Horror"); power = new MageInt(2); toughness = new MageInt(2); - this.addAbility(new UnblockableAbility()); + this.addAbility(new CantBeBlockedSourceAbility()); } } } diff --git a/Mage.Sets/src/mage/sets/gatecrash/ElusiveKrasis.java b/Mage.Sets/src/mage/sets/gatecrash/ElusiveKrasis.java index 631f8cc67ee..0a734aa9653 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/ElusiveKrasis.java +++ b/Mage.Sets/src/mage/sets/gatecrash/ElusiveKrasis.java @@ -32,7 +32,7 @@ import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; import mage.abilities.keyword.EvolveAbility; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; /** @@ -52,8 +52,8 @@ public class ElusiveKrasis extends CardImpl { this.power = new MageInt(0); this.toughness = new MageInt(4); - // Elusive Krasis is unblockable. - this.addAbility(new UnblockableAbility()); + // Elusive Krasis can't be blocked. + this.addAbility(new CantBeBlockedSourceAbility()); // Evolve this.addAbility(new EvolveAbility()); } diff --git a/Mage.Sets/src/mage/sets/gatecrash/GlaringSpotlight.java b/Mage.Sets/src/mage/sets/gatecrash/GlaringSpotlight.java index 7b80fb50ca5..b30fa1397f2 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/GlaringSpotlight.java +++ b/Mage.Sets/src/mage/sets/gatecrash/GlaringSpotlight.java @@ -41,7 +41,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.AsThoughEffectImpl; -import mage.abilities.effects.common.combat.UnblockableAllEffect; +import mage.abilities.effects.common.combat.CantBeBlockedAllEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; @@ -57,7 +57,7 @@ import mage.game.permanent.Permanent; * ignore hexproof for purposes of choosing targets of spells and abilities you control. * * Creatures that come under your control after Glaring Spotlight's last ability - * resolves won't have hexproof but will be unblockable that turn. + * resolves won't have hexproof but can't be blocked that turn. * * @author LevelX2 */ @@ -70,11 +70,11 @@ public class GlaringSpotlight extends CardImpl { // Creatures your opponents control with hexproof can be the targets of spells and abilities you control as though they didn't have hexproof. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GlaringSpotlightEffect())); - // {3}, Sacrifice Glaring Spotlight: Creatures you control gain hexproof until end of turn and are unblockable this turn. + // {3}, Sacrifice Glaring Spotlight: Creatures you control gain hexproof until end of turn and can't be blocked this turn. Ability ability = new SimpleActivatedAbility( Zone.BATTLEFIELD, new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.EndOfTurn, new FilterCreaturePermanent(),false), new GenericManaCost(3)); - ability.addEffect(new UnblockableAllEffect(new FilterControlledCreaturePermanent(), Duration.EndOfTurn)); + ability.addEffect(new CantBeBlockedAllEffect(new FilterControlledCreaturePermanent(), Duration.EndOfTurn)); ability.addCost(new SacrificeSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/gatecrash/IncursionSpecialist.java b/Mage.Sets/src/mage/sets/gatecrash/IncursionSpecialist.java index befc3cc360e..64470da92ae 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/IncursionSpecialist.java +++ b/Mage.Sets/src/mage/sets/gatecrash/IncursionSpecialist.java @@ -32,7 +32,7 @@ import java.util.UUID; import mage.constants.*; import mage.MageInt; import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; import mage.game.Game; @@ -56,7 +56,7 @@ public class IncursionSpecialist extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(3); - // Whenever you cast your second spell each turn, Incursion Specialist gets +2/+0 until end of turn and is unblockable this turn. + // Whenever you cast your second spell each turn, Incursion Specialist gets +2/+0 until end of turn and can't be blocked this turn. this.addAbility(new IncursionTriggeredAbility(), new IncursionWatcher()); } @@ -74,7 +74,7 @@ class IncursionTriggeredAbility extends TriggeredAbilityImpl { public IncursionTriggeredAbility() { super(Zone.BATTLEFIELD, new BoostSourceEffect(2, 0, Duration.EndOfTurn)); - this.addEffect(new UnblockableSourceEffect(Duration.EndOfTurn)); + this.addEffect(new CantBeBlockedSourceEffect(Duration.EndOfTurn)); } public IncursionTriggeredAbility(final IncursionTriggeredAbility ability) { @@ -99,7 +99,7 @@ class IncursionTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { - return "Whenever you cast your second spell each turn, Incursion Specialist gets +2/+0 until end of turn and is unblockable this turn."; + return "Whenever you cast your second spell each turn, Incursion Specialist gets +2/+0 until end of turn and can't be blocked this turn."; } } diff --git a/Mage.Sets/src/mage/sets/gatecrash/KeymasterRogue.java b/Mage.Sets/src/mage/sets/gatecrash/KeymasterRogue.java index 92df2c621ec..aca818284b3 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/KeymasterRogue.java +++ b/Mage.Sets/src/mage/sets/gatecrash/KeymasterRogue.java @@ -31,7 +31,7 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.ReturnToHandChosenControlledPermanentEffect; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; @@ -53,8 +53,8 @@ public class KeymasterRogue extends CardImpl { this.power = new MageInt(3); this.toughness = new MageInt(2); - // Keymaster Rogue is unblockable. - this.addAbility(new UnblockableAbility()); + // Keymaster Rogue can't be blocked. + this.addAbility(new CantBeBlockedSourceAbility()); // When Keymaster Rogue enters the battlefield, return a creature you control to its owner's hand. this.addAbility(new EntersBattlefieldTriggeredAbility(new ReturnToHandChosenControlledPermanentEffect(new FilterControlledCreaturePermanent()))); } diff --git a/Mage.Sets/src/mage/sets/gatecrash/WayOfTheThief.java b/Mage.Sets/src/mage/sets/gatecrash/WayOfTheThief.java index 5f679828b9e..e87cdb27156 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/WayOfTheThief.java +++ b/Mage.Sets/src/mage/sets/gatecrash/WayOfTheThief.java @@ -40,7 +40,7 @@ import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; -import mage.abilities.effects.common.combat.UnblockableAttachedEffect; +import mage.abilities.effects.common.combat.CantBeBlockedAttachedEffect; import mage.abilities.effects.common.continuous.BoostEnchantedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; @@ -61,7 +61,7 @@ public class WayOfTheThief extends CardImpl { static { filter.add(new SubtypePredicate("Gate")); } - private final String rule = "Enchanted creature is unblockable as long as you control a Gate"; + private final String rule = "Enchanted creature can't be blocked 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}"); @@ -80,8 +80,8 @@ public class WayOfTheThief extends CardImpl { // Enchanted creature gets +2/+2. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield))); - // Enchanted creature is unblockable as long as you control a Gate. - Effect effect = new ConditionalRestrictionEffect(new UnblockableAttachedEffect(AttachmentType.AURA), new PermanentsOnTheBattlefieldCondition(filter)); + // Enchanted creature can't be blocked as long as you control a Gate. + Effect effect = new ConditionalRestrictionEffect(new CantBeBlockedAttachedEffect(AttachmentType.AURA), new PermanentsOnTheBattlefieldCondition(filter)); effect.setText(rule); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/sets/guildpact/InfiltratorsMagemark.java b/Mage.Sets/src/mage/sets/guildpact/InfiltratorsMagemark.java index a237bac6199..ce22019b841 100644 --- a/Mage.Sets/src/mage/sets/guildpact/InfiltratorsMagemark.java +++ b/Mage.Sets/src/mage/sets/guildpact/InfiltratorsMagemark.java @@ -79,7 +79,7 @@ public class InfiltratorsMagemark extends CardImpl { this.addAbility(ability); // Creatures you control that are enchanted get +1/+1 and can't be blocked except by creatures with defender. ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1,1, Duration.WhileOnBattlefield, filter, false)); - Effect effect = new InfiltratorsMagemarkUnblockableAllEffect(filter, Duration.WhileOnBattlefield); + Effect effect = new InfiltratorsMagemarkCantBeBlockedAllEffect(filter, Duration.WhileOnBattlefield); ability.addEffect(effect); this.addAbility(ability); } @@ -94,24 +94,24 @@ public class InfiltratorsMagemark extends CardImpl { } } -class InfiltratorsMagemarkUnblockableAllEffect extends RestrictionEffect { +class InfiltratorsMagemarkCantBeBlockedAllEffect extends RestrictionEffect { - private FilterPermanent filter; + private final FilterPermanent filter; - public InfiltratorsMagemarkUnblockableAllEffect(FilterPermanent filter, Duration duration) { + public InfiltratorsMagemarkCantBeBlockedAllEffect(FilterPermanent filter, Duration duration) { super(duration); this.filter = filter; this.staticText = "and can't be blocked except by creatures with defender"; } - public InfiltratorsMagemarkUnblockableAllEffect(InfiltratorsMagemarkUnblockableAllEffect effect) { + public InfiltratorsMagemarkCantBeBlockedAllEffect(InfiltratorsMagemarkCantBeBlockedAllEffect effect) { super(effect); this.filter = effect.filter; } @Override - public InfiltratorsMagemarkUnblockableAllEffect copy() { - return new InfiltratorsMagemarkUnblockableAllEffect(this); + public InfiltratorsMagemarkCantBeBlockedAllEffect copy() { + return new InfiltratorsMagemarkCantBeBlockedAllEffect(this); } @Override diff --git a/Mage.Sets/src/mage/sets/innistrad/InvisibleStalker.java b/Mage.Sets/src/mage/sets/innistrad/InvisibleStalker.java index 8c75fbd156a..8121ed30a4e 100644 --- a/Mage.Sets/src/mage/sets/innistrad/InvisibleStalker.java +++ b/Mage.Sets/src/mage/sets/innistrad/InvisibleStalker.java @@ -32,7 +32,7 @@ import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; import mage.abilities.keyword.HexproofAbility; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; /** @@ -52,8 +52,8 @@ public class InvisibleStalker extends CardImpl { this.toughness = new MageInt(1); this.addAbility(HexproofAbility.getInstance()); - // Invisible Stalker is unblockable. - this.addAbility(new UnblockableAbility()); + // Invisible Stalker can't be blocked. + this.addAbility(new CantBeBlockedSourceAbility()); } public InvisibleStalker(final InvisibleStalker card) { diff --git a/Mage.Sets/src/mage/sets/journeyintonyx/TritonShorestalker.java b/Mage.Sets/src/mage/sets/journeyintonyx/TritonShorestalker.java index ac4f475055c..5696b006d42 100644 --- a/Mage.Sets/src/mage/sets/journeyintonyx/TritonShorestalker.java +++ b/Mage.Sets/src/mage/sets/journeyintonyx/TritonShorestalker.java @@ -29,7 +29,7 @@ package mage.sets.journeyintonyx; import java.util.UUID; import mage.MageInt; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; @@ -51,7 +51,7 @@ public class TritonShorestalker extends CardImpl { this.toughness = new MageInt(1); // Triton Shorestalker can't be blocked. - this.addAbility(new UnblockableAbility("{this} can't be blocked")); + this.addAbility(new CantBeBlockedSourceAbility("{this} can't be blocked")); } public TritonShorestalker(final TritonShorestalker card) { diff --git a/Mage.Sets/src/mage/sets/journeyintonyx/WhitewaterNaiads.java b/Mage.Sets/src/mage/sets/journeyintonyx/WhitewaterNaiads.java index 774d9787110..0c8d2688778 100644 --- a/Mage.Sets/src/mage/sets/journeyintonyx/WhitewaterNaiads.java +++ b/Mage.Sets/src/mage/sets/journeyintonyx/WhitewaterNaiads.java @@ -49,7 +49,6 @@ public class WhitewaterNaiads extends CardImpl { this.expansionSetCode = "JOU"; this.subtype.add("Nymph"); - this.color.setBlue(true); this.power = new MageInt(4); this.toughness = new MageInt(4); diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/MysticOfTheHiddenWay.java b/Mage.Sets/src/mage/sets/khansoftarkir/MysticOfTheHiddenWay.java index 57087e2ea3a..f88abc12c87 100644 --- a/Mage.Sets/src/mage/sets/khansoftarkir/MysticOfTheHiddenWay.java +++ b/Mage.Sets/src/mage/sets/khansoftarkir/MysticOfTheHiddenWay.java @@ -32,7 +32,7 @@ import mage.MageInt; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.combat.CantBeBlockedByCreaturesSourceEffect; import mage.abilities.keyword.MorphAbility; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; @@ -54,7 +54,7 @@ public class MysticOfTheHiddenWay extends CardImpl { this.toughness = new MageInt(2); // Mystic of the Hidden Way can't be blocked. - this.addAbility(new UnblockableAbility()); + this.addAbility(new CantBeBlockedSourceAbility()); // Morph {2}{U} this.addAbility(new MorphAbility(this, new ManaCostsImpl("{2}{U}"))); } diff --git a/Mage.Sets/src/mage/sets/lorwyn/ProtectiveBubble.java b/Mage.Sets/src/mage/sets/lorwyn/ProtectiveBubble.java index 984ef405c6d..65abb711fbc 100644 --- a/Mage.Sets/src/mage/sets/lorwyn/ProtectiveBubble.java +++ b/Mage.Sets/src/mage/sets/lorwyn/ProtectiveBubble.java @@ -35,7 +35,7 @@ import mage.constants.Rarity; import mage.constants.Zone; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.AttachEffect; -import mage.abilities.effects.common.combat.UnblockableAttachedEffect; +import mage.abilities.effects.common.combat.CantBeBlockedAttachedEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.ShroudAbility; @@ -60,8 +60,8 @@ public class ProtectiveBubble extends CardImpl { this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature)); this.addAbility(new EnchantAbility(auraTarget.getTargetName())); - // Enchanted creature is unblockable and has shroud. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new UnblockableAttachedEffect(AttachmentType.AURA))); + // Enchanted creature can't be blocked and has shroud. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedAttachedEffect(AttachmentType.AURA))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ShroudAbility.getInstance(), AttachmentType.AURA))); } diff --git a/Mage.Sets/src/mage/sets/magic2010/MerfolkSovereign.java b/Mage.Sets/src/mage/sets/magic2010/MerfolkSovereign.java index 50bb177d8db..86d4b5e84f4 100644 --- a/Mage.Sets/src/mage/sets/magic2010/MerfolkSovereign.java +++ b/Mage.Sets/src/mage/sets/magic2010/MerfolkSovereign.java @@ -38,7 +38,7 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.effects.common.combat.UnblockableTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.abilities.effects.common.continuous.BoostControlledEffect; import mage.cards.CardImpl; import mage.filter.common.FilterCreaturePermanent; @@ -69,8 +69,8 @@ public class MerfolkSovereign extends CardImpl { // Other Merfolk creatures you control get +1/+1. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter1, true))); - // {tap}: Target Merfolk creature is unblockable this turn. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UnblockableTargetEffect(), new TapSourceCost()); + // {tap}: Target Merfolk creature can't be blocked this turn. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CantBeBlockedTargetEffect(), new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent(filter2)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/magic2010/PhantomWarrior.java b/Mage.Sets/src/mage/sets/magic2010/PhantomWarrior.java index 7a70dae75f7..999274326e1 100644 --- a/Mage.Sets/src/mage/sets/magic2010/PhantomWarrior.java +++ b/Mage.Sets/src/mage/sets/magic2010/PhantomWarrior.java @@ -31,7 +31,7 @@ import java.util.UUID; import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; /** @@ -48,7 +48,7 @@ public class PhantomWarrior extends CardImpl { this.color.setBlue(true); this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new UnblockableAbility()); + this.addAbility(new CantBeBlockedSourceAbility()); } public PhantomWarrior(final PhantomWarrior card) { diff --git a/Mage.Sets/src/mage/sets/magic2011/StormtideLeviathan.java b/Mage.Sets/src/mage/sets/magic2011/StormtideLeviathan.java index 922b7a75725..345074619c5 100644 --- a/Mage.Sets/src/mage/sets/magic2011/StormtideLeviathan.java +++ b/Mage.Sets/src/mage/sets/magic2011/StormtideLeviathan.java @@ -75,7 +75,7 @@ public class StormtideLeviathan extends CardImpl { this.power = new MageInt(8); this.toughness = new MageInt(8); - // Islandwalk (This creature is unblockable as long as defending player controls an Island.) + // Islandwalk (This creature can't be blocked as long as defending player controls an Island.) this.addAbility(new IslandwalkAbility()); // All lands are Islands in addition to their other types. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new StormtideLeviathanEffect())); diff --git a/Mage.Sets/src/mage/sets/magic2012/TormentedSoul.java b/Mage.Sets/src/mage/sets/magic2012/TormentedSoul.java index 73082602058..217f718ea9d 100644 --- a/Mage.Sets/src/mage/sets/magic2012/TormentedSoul.java +++ b/Mage.Sets/src/mage/sets/magic2012/TormentedSoul.java @@ -34,7 +34,7 @@ import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; import mage.abilities.common.CantBlockAbility; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; /** @@ -50,7 +50,7 @@ public class TormentedSoul extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); this.addAbility(new CantBlockAbility()); - this.addAbility(new UnblockableAbility()); + this.addAbility(new CantBeBlockedSourceAbility()); } public TormentedSoul(final TormentedSoul card) { diff --git a/Mage.Sets/src/mage/sets/magic2013/HarborBandit.java b/Mage.Sets/src/mage/sets/magic2013/HarborBandit.java index cbd3406628e..943027fbb0e 100644 --- a/Mage.Sets/src/mage/sets/magic2013/HarborBandit.java +++ b/Mage.Sets/src/mage/sets/magic2013/HarborBandit.java @@ -38,7 +38,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.decorator.ConditionalContinuousEffect; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; @@ -71,9 +71,9 @@ public class HarborBandit extends CardImpl { ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new BoostSourceEffect(1, 1, Duration.WhileOnBattlefield), new PermanentsOnTheBattlefieldCondition(filter), rule); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); - // {1}{U}: Harbor Bandit is unblockable this turn. + // {1}{U}: Harbor Bandit can't be blocked this turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, - new UnblockableSourceEffect(Duration.EndOfTurn), + new CantBeBlockedSourceEffect(Duration.EndOfTurn), new ManaCostsImpl("{1}{U}"))); } diff --git a/Mage.Sets/src/mage/sets/magic2013/TricksOfTheTrade.java b/Mage.Sets/src/mage/sets/magic2013/TricksOfTheTrade.java index b2bba5bfa37..3853f0cd5c7 100644 --- a/Mage.Sets/src/mage/sets/magic2013/TricksOfTheTrade.java +++ b/Mage.Sets/src/mage/sets/magic2013/TricksOfTheTrade.java @@ -36,7 +36,7 @@ import mage.constants.Rarity; import mage.constants.Zone; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.AttachEffect; -import mage.abilities.effects.common.combat.UnblockableAttachedEffect; +import mage.abilities.effects.common.combat.CantBeBlockedAttachedEffect; import mage.abilities.effects.common.continuous.BoostEnchantedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; @@ -62,9 +62,9 @@ public class TricksOfTheTrade extends CardImpl { this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility)); this.addAbility(new EnchantAbility(target.getTargetName())); - // Enchanted creature gets +2/+0 and is unblockable. + // Enchanted creature gets +2/+0 and can't be blocked. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 0, Duration.WhileOnBattlefield))); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new UnblockableAttachedEffect(AttachmentType.AURA))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedAttachedEffect(AttachmentType.AURA))); } public TricksOfTheTrade(final TricksOfTheTrade card) { diff --git a/Mage.Sets/src/mage/sets/magic2015/AmphinPathmage.java b/Mage.Sets/src/mage/sets/magic2015/AmphinPathmage.java index 77c4c8ff42d..9bf3edab965 100644 --- a/Mage.Sets/src/mage/sets/magic2015/AmphinPathmage.java +++ b/Mage.Sets/src/mage/sets/magic2015/AmphinPathmage.java @@ -52,7 +52,6 @@ public class AmphinPathmage extends CardImpl { this.subtype.add("Salamander"); this.subtype.add("Wizard"); - this.color.setBlue(true); this.power = new MageInt(3); this.toughness = new MageInt(2); diff --git a/Mage.Sets/src/mage/sets/magic2015/HotSoup.java b/Mage.Sets/src/mage/sets/magic2015/HotSoup.java index c1fa5a928b9..b14a940e4e7 100644 --- a/Mage.Sets/src/mage/sets/magic2015/HotSoup.java +++ b/Mage.Sets/src/mage/sets/magic2015/HotSoup.java @@ -33,7 +33,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.Effect; import mage.abilities.effects.common.DestroyTargetEffect; -import mage.abilities.effects.common.combat.UnblockableAttachedEffect; +import mage.abilities.effects.common.combat.CantBeBlockedAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.cards.CardImpl; import mage.constants.AttachmentType; @@ -58,7 +58,7 @@ public class HotSoup extends CardImpl { this.subtype.add("Equipment"); // Equipped creature can't be blocked. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new UnblockableAttachedEffect(AttachmentType.EQUIPMENT))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedAttachedEffect(AttachmentType.EQUIPMENT))); // Whenever equipped creature is dealt damage, destroy it. this.addAbility(new HotSoupTriggeredAbility()); diff --git a/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java b/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java index 84cec58e5e3..4beea189d87 100644 --- a/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java +++ b/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java @@ -33,7 +33,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DefendingPlayerControlsCondition; import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.Effect; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; @@ -55,11 +55,11 @@ public class NeurokSpy extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - //Neurok Spy is unblockable as long as defending player controls an artifact. + //Neurok Spy can't be blocked as long as defending player controls an artifact. Effect effect = new ConditionalRestrictionEffect( - new UnblockableSourceEffect(), + new CantBeBlockedSourceEffect(), new DefendingPlayerControlsCondition(new FilterArtifactPermanent())); - effect.setText("{this} is unblockable as long as defending player controls an artifact"); + effect.setText("{this} can't be blocked as long as defending player controls an artifact"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/sets/newphyrexia/BlightedAgent.java b/Mage.Sets/src/mage/sets/newphyrexia/BlightedAgent.java index ce3b87527c2..c9a807aa3d2 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/BlightedAgent.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/BlightedAgent.java @@ -32,7 +32,7 @@ import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; import mage.abilities.keyword.InfectAbility; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; /** @@ -52,7 +52,7 @@ public class BlightedAgent extends CardImpl { this.toughness = new MageInt(1); this.addAbility(InfectAbility.getInstance()); - this.addAbility(new UnblockableAbility()); + this.addAbility(new CantBeBlockedSourceAbility()); } public BlightedAgent(final BlightedAgent card) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/TrespassingSouleater.java b/Mage.Sets/src/mage/sets/newphyrexia/TrespassingSouleater.java index 2acd7572ae3..157e4211918 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/TrespassingSouleater.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/TrespassingSouleater.java @@ -36,7 +36,7 @@ import mage.constants.Zone; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.PhyrexianManaCost; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.cards.CardImpl; /** @@ -53,9 +53,9 @@ public class TrespassingSouleater extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - // {UP}: Trespassing Souleater is unblockable this turn. + // {UP}: Trespassing Souleater can't be blocked this turn. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, - new UnblockableSourceEffect(Duration.EndOfTurn), + new CantBeBlockedSourceEffect(Duration.EndOfTurn), new PhyrexianManaCost(ColoredManaSymbol.U))); } diff --git a/Mage.Sets/src/mage/sets/ninthedition/TidalKraken.java b/Mage.Sets/src/mage/sets/ninthedition/TidalKraken.java index b245edec5b4..3df333d9af8 100644 --- a/Mage.Sets/src/mage/sets/ninthedition/TidalKraken.java +++ b/Mage.Sets/src/mage/sets/ninthedition/TidalKraken.java @@ -31,7 +31,7 @@ import java.util.UUID; import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; /** @@ -49,8 +49,8 @@ public class TidalKraken extends CardImpl { this.power = new MageInt(6); this.toughness = new MageInt(6); - // Tidal Kraken is unblockable. - this.addAbility(new UnblockableAbility()); + // Tidal Kraken can't be blocked. + this.addAbility(new CantBeBlockedSourceAbility()); } public TidalKraken(final TidalKraken card) { diff --git a/Mage.Sets/src/mage/sets/odyssey/EscapeArtist.java b/Mage.Sets/src/mage/sets/odyssey/EscapeArtist.java index a7c93b9c728..13a1dedf915 100644 --- a/Mage.Sets/src/mage/sets/odyssey/EscapeArtist.java +++ b/Mage.Sets/src/mage/sets/odyssey/EscapeArtist.java @@ -35,7 +35,7 @@ import mage.abilities.costs.common.DiscardCardCost; import mage.abilities.costs.common.DiscardTargetCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.ReturnToHandSourceEffect; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; @@ -58,8 +58,8 @@ public class EscapeArtist extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - // Escape Artist is unblockable. - this.addAbility(new UnblockableAbility()); + // Escape Artist can't be blocked. + this.addAbility(new CantBeBlockedSourceAbility()); // {U}, Discard a card: Return Escape Artist to its owner's hand. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandSourceEffect(true), new ManaCostsImpl("{U}")); ability.addCost(new DiscardTargetCost(new TargetCardInHand())); diff --git a/Mage.Sets/src/mage/sets/odyssey/TouchOfInvisibility.java b/Mage.Sets/src/mage/sets/odyssey/TouchOfInvisibility.java index c674718d632..d0b8023d411 100644 --- a/Mage.Sets/src/mage/sets/odyssey/TouchOfInvisibility.java +++ b/Mage.Sets/src/mage/sets/odyssey/TouchOfInvisibility.java @@ -46,9 +46,7 @@ public class TouchOfInvisibility extends CardImpl { super(ownerId, 109, "Touch of Invisibility", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{3}{U}"); this.expansionSetCode = "ODY"; - this.color.setBlue(true); - - // Target creature is unblockable this turn. + // Target creature can't be blocked this turn. this.getSpellAbility().addEffect(new CantBeBlockedTargetEffect(Duration.EndOfTurn)); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); diff --git a/Mage.Sets/src/mage/sets/portalthreekingdoms/ZhugeJinWuStrategist.java b/Mage.Sets/src/mage/sets/portalthreekingdoms/ZhugeJinWuStrategist.java index ff0c1da3e3a..5991ebf414d 100644 --- a/Mage.Sets/src/mage/sets/portalthreekingdoms/ZhugeJinWuStrategist.java +++ b/Mage.Sets/src/mage/sets/portalthreekingdoms/ZhugeJinWuStrategist.java @@ -53,6 +53,7 @@ public class ZhugeJinWuStrategist extends CardImpl { this.supertype.add("Legendary"); this.subtype.add("Human"); this.subtype.add("Advisor"); + this.power = new MageInt(1); this.toughness = new MageInt(1); diff --git a/Mage.Sets/src/mage/sets/prophecy/HazyHomunculus.java b/Mage.Sets/src/mage/sets/prophecy/HazyHomunculus.java index 31369172a74..4c05ce89eae 100644 --- a/Mage.Sets/src/mage/sets/prophecy/HazyHomunculus.java +++ b/Mage.Sets/src/mage/sets/prophecy/HazyHomunculus.java @@ -36,7 +36,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DefendingPlayerControlsCondition; import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.Effect; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; import mage.filter.common.FilterLandPermanent; @@ -65,11 +65,11 @@ public class HazyHomunculus extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - // Hazy Homunculus is unblockable as long as defending player controls an untapped land. + // Hazy Homunculus can't be blocked as long as defending player controls an untapped land. Effect effect = new ConditionalRestrictionEffect( - new UnblockableSourceEffect(), + new CantBeBlockedSourceEffect(), new DefendingPlayerControlsCondition(filter)); - effect.setText("{this} is unblockable as long as defending player controls an untapped land"); + effect.setText("{this} can't be blocked as long as defending player controls an untapped land"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/sets/ravnica/DimirInfiltrator.java b/Mage.Sets/src/mage/sets/ravnica/DimirInfiltrator.java index b3a581b79a2..b6f929395b5 100644 --- a/Mage.Sets/src/mage/sets/ravnica/DimirInfiltrator.java +++ b/Mage.Sets/src/mage/sets/ravnica/DimirInfiltrator.java @@ -32,7 +32,7 @@ import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; import mage.abilities.keyword.TransmuteAbility; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; /** @@ -51,8 +51,8 @@ public class DimirInfiltrator extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(3); - // Dimir Infiltrator is unblockable. - this.addAbility(new UnblockableAbility()); + // Dimir Infiltrator can't be blocked. + this.addAbility(new CantBeBlockedSourceAbility()); // Transmute {1}{U}{B} this.addAbility(new TransmuteAbility("{1}{U}{B}")); } diff --git a/Mage.Sets/src/mage/sets/ravnica/EtherealUsher.java b/Mage.Sets/src/mage/sets/ravnica/EtherealUsher.java index 992c16cbcb0..e53631e3fb4 100644 --- a/Mage.Sets/src/mage/sets/ravnica/EtherealUsher.java +++ b/Mage.Sets/src/mage/sets/ravnica/EtherealUsher.java @@ -36,7 +36,7 @@ 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.common.combat.UnblockableTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.abilities.keyword.TransmuteAbility; import mage.cards.CardImpl; import mage.target.common.TargetCreaturePermanent; @@ -56,9 +56,9 @@ public class EtherealUsher extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(3); - // {U}, {tap}: Target creature is unblockable this turn. + // {U}, {tap}: Target creature can't be blocked this turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, - new UnblockableTargetEffect(), + new CantBeBlockedTargetEffect(), new ManaCostsImpl("{U}")); ability.addCost(new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent()); diff --git a/Mage.Sets/src/mage/sets/ravnica/HuntedPhantasm.java b/Mage.Sets/src/mage/sets/ravnica/HuntedPhantasm.java index 2dd9c174e96..59c75df0fac 100644 --- a/Mage.Sets/src/mage/sets/ravnica/HuntedPhantasm.java +++ b/Mage.Sets/src/mage/sets/ravnica/HuntedPhantasm.java @@ -34,7 +34,7 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.CreateTokenTargetEffect; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; import mage.game.permanent.token.GoblinToken; import mage.target.Target; @@ -55,8 +55,8 @@ public class HuntedPhantasm extends CardImpl { this.power = new MageInt(4); this.toughness = new MageInt(6); - // Hunted Phantasm is unblockable. - this.addAbility(new UnblockableAbility()); + // Hunted Phantasm can't be blocked. + this.addAbility(new CantBeBlockedSourceAbility()); // When Hunted Phantasm enters the battlefield, put five 1/1 red Goblin creature tokens onto the battlefield under target opponent's control. Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenTargetEffect(new GoblinToken(), 5), false); Target target = new TargetOpponent(); diff --git a/Mage.Sets/src/mage/sets/returntoravnica/RoguesPassage.java b/Mage.Sets/src/mage/sets/returntoravnica/RoguesPassage.java index 74ae0771741..989b4edbf25 100644 --- a/Mage.Sets/src/mage/sets/returntoravnica/RoguesPassage.java +++ b/Mage.Sets/src/mage/sets/returntoravnica/RoguesPassage.java @@ -37,7 +37,7 @@ 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.common.combat.UnblockableTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.target.common.TargetCreaturePermanent; @@ -54,8 +54,8 @@ public class RoguesPassage extends CardImpl { // {T}: Add {1} to your mana pool. this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, new Mana(0, 0, 0, 0, 0, 1, 0), new TapSourceCost())); - // {4}, {T}: Target creature is unblockable this turn. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UnblockableTargetEffect(), new ManaCostsImpl("{4}")); + // {4}, {T}: Target creature can't be blocked this turn. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CantBeBlockedTargetEffect(), new ManaCostsImpl("{4}")); ability.addCost(new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/sets/returntoravnica/SewerShambler.java b/Mage.Sets/src/mage/sets/returntoravnica/SewerShambler.java index fbb2127f36c..eb96817b1fc 100644 --- a/Mage.Sets/src/mage/sets/returntoravnica/SewerShambler.java +++ b/Mage.Sets/src/mage/sets/returntoravnica/SewerShambler.java @@ -51,7 +51,7 @@ public class SewerShambler extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(1); - // Swampwalk (This creature is unblockable as long as defending player controls a Swamp.) + // Swampwalk (This creature can't be blocked as long as defending player controls a Swamp.) this.addAbility(new SwampwalkAbility()); // Scavenge {2}{B} ({2}{B}, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery.) this.addAbility(new ScavengeAbility(new ManaCostsImpl("{2}{B}"))); diff --git a/Mage.Sets/src/mage/sets/returntoravnica/SoulswornSpirit.java b/Mage.Sets/src/mage/sets/returntoravnica/SoulswornSpirit.java index 80d804204ab..7b840c2d18b 100644 --- a/Mage.Sets/src/mage/sets/returntoravnica/SoulswornSpirit.java +++ b/Mage.Sets/src/mage/sets/returntoravnica/SoulswornSpirit.java @@ -35,7 +35,7 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.DetainTargetEffect; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; @@ -63,8 +63,8 @@ public class SoulswornSpirit extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(1); - // Soulsworn Spirit is unblockable. - this.addAbility(new UnblockableAbility()); + // Soulsworn Spirit can't be blocked. + this.addAbility(new CantBeBlockedSourceAbility()); // When Soulsworn Spirit enters the battlefield, detain target creature an opponent controls. //(Until your next turn, that creature can't attack or block and its activated abilities can't be activated.) diff --git a/Mage.Sets/src/mage/sets/returntoravnica/Teleportal.java b/Mage.Sets/src/mage/sets/returntoravnica/Teleportal.java index 4198abeec35..608223fdc6e 100644 --- a/Mage.Sets/src/mage/sets/returntoravnica/Teleportal.java +++ b/Mage.Sets/src/mage/sets/returntoravnica/Teleportal.java @@ -37,7 +37,7 @@ import mage.constants.TargetController; import mage.abilities.Ability; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.combat.UnblockableTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.abilities.effects.common.continuous.BoostAllEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.keyword.OverloadAbility; @@ -70,10 +70,10 @@ public class Teleportal extends CardImpl { this.color.setBlue(true); this.color.setRed(true); - // Target creature you control gets +1/+0 until end of turn and is unblockable this turn. + // Target creature you control gets +1/+0 until end of turn and can't be blocked this turn. this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); this.getSpellAbility().addEffect(new BoostTargetEffect(1,0, Duration.EndOfTurn)); - this.getSpellAbility().addEffect(new UnblockableTargetEffect()); + this.getSpellAbility().addEffect(new CantBeBlockedTargetEffect()); // Overload {3}{U}{R} (You may cast this spell for its overload cost. If you do, change its text by replacing all instances of "target" with "each.") OverloadAbility ability = new OverloadAbility(this, new BoostAllEffect(1,0, Duration.EndOfTurn, filter,false), new ManaCostsImpl("{3}{U}{R}"), TimingRule.SORCERY); @@ -97,7 +97,7 @@ class TeleportalEffect extends OneShotEffect { public TeleportalEffect(FilterCreaturePermanent filter) { super(Outcome.ReturnToHand); - staticText = "each creature you control is unblockable this turn"; + staticText = "each creature you control can't be blocked this turn"; this.filter = filter; } @@ -109,7 +109,7 @@ class TeleportalEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { for (Permanent creature : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) { - UnblockableTargetEffect effect = new UnblockableTargetEffect(); + CantBeBlockedTargetEffect effect = new CantBeBlockedTargetEffect(); effect.setTargetPointer(new FixedTarget(creature.getId())); game.addEffect(effect, source); } diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/DistortionStrike.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/DistortionStrike.java index a2b518a1a1d..3b4887bdfab 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/DistortionStrike.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/DistortionStrike.java @@ -32,7 +32,7 @@ import mage.abilities.effects.Effect; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Rarity; -import mage.abilities.effects.common.combat.UnblockableTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.abilities.keyword.ReboundAbility; import mage.cards.CardImpl; @@ -50,11 +50,11 @@ public class DistortionStrike extends CardImpl { this.color.setBlue(true); - // Target creature gets +1/+0 until end of turn and is unblockable this turn. + // Target creature gets +1/+0 until end of turn and can't be blocked this turn. this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addEffect(new BoostTargetEffect(1, 0, Duration.EndOfTurn)); - Effect effect = new UnblockableTargetEffect(); - effect.setText("and is unblockable this turn"); + Effect effect = new CantBeBlockedTargetEffect(); + effect.setText("and can't be blocked this turn"); this.getSpellAbility().addEffect(effect); // Rebound this.addAbility(new ReboundAbility()); diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/GoblinTunneler.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/GoblinTunneler.java index f118ff9b576..ab8f45c82ce 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/GoblinTunneler.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/GoblinTunneler.java @@ -36,7 +36,7 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.effects.common.combat.UnblockableTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.cards.CardImpl; import mage.filter.Filter.ComparisonType; import mage.filter.common.FilterCreaturePermanent; @@ -64,8 +64,8 @@ public class GoblinTunneler extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - // {tap}: Target creature with power 2 or less is unblockable this turn. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UnblockableTargetEffect(), new TapSourceCost()); + // {tap}: Target creature with power 2 or less can't be blocked this turn. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CantBeBlockedTargetEffect(), new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/HadaSpyPatrol.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/HadaSpyPatrol.java index fe54df898f8..2b0d50741d4 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/HadaSpyPatrol.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/HadaSpyPatrol.java @@ -36,7 +36,7 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.keyword.LevelUpAbility; import mage.abilities.keyword.LevelerCardBuilder; import mage.abilities.keyword.ShroudAbility; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.LevelerCard; import mage.constants.CardType; import mage.constants.Rarity; @@ -64,7 +64,7 @@ public class HadaSpyPatrol extends LevelerCard { // 2/2 // Hada Spy Patrol can't be blocked. Abilities abilities1 = new AbilitiesImpl<>(); - abilities1.add(new UnblockableAbility()); + abilities1.add(new CantBeBlockedSourceAbility()); // LEVEL 3+ // 3/3 @@ -72,7 +72,7 @@ public class HadaSpyPatrol extends LevelerCard { // Hada Spy Patrol can't be blocked. Abilities abilities2 = new AbilitiesImpl<>(); abilities2.add(ShroudAbility.getInstance()); - abilities2.add(new UnblockableAbility()); + abilities2.add(new CantBeBlockedSourceAbility()); LevelerCardBuilder.construct(this, new LevelerCardBuilder.LevelAbility(1, 2, abilities1, 2, 2), diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/NeurokInvisimancer.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/NeurokInvisimancer.java index 0521e79134d..5699d30269e 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/NeurokInvisimancer.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/NeurokInvisimancer.java @@ -34,8 +34,8 @@ import mage.constants.Rarity; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.effects.common.combat.UnblockableTargetEffect; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; import mage.target.common.TargetCreaturePermanent; @@ -54,10 +54,10 @@ public class NeurokInvisimancer extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(1); - // Neurok Invisimancer is unblockable. - this.addAbility(new UnblockableAbility()); - // When Neurok Invisimancer enters the battlefield, target creature is unblockable this turn. - Ability ability = new EntersBattlefieldTriggeredAbility(new UnblockableTargetEffect()); + // Neurok Invisimancer can't be blocked. + this.addAbility(new CantBeBlockedSourceAbility()); + // When Neurok Invisimancer enters the battlefield, target creature can't be blocked this turn. + Ability ability = new EntersBattlefieldTriggeredAbility(new CantBeBlockedTargetEffect()); ability.addTarget(new TargetCreaturePermanent()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/ScrapdiverSerpent.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/ScrapdiverSerpent.java index c6c4a193fb4..01d5a9f76a5 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/ScrapdiverSerpent.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/ScrapdiverSerpent.java @@ -38,7 +38,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DefendingPlayerControlsCondition; import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.Effect; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.cards.CardImpl; import mage.filter.common.FilterArtifactPermanent; @@ -56,11 +56,11 @@ public class ScrapdiverSerpent extends CardImpl { this.power = new MageInt(5); this.toughness = new MageInt(5); - // Scrapdiver Serpent is unblockable as long as defending player controls an artifact + // Scrapdiver Serpent can't be blocked as long as defending player controls an artifact Effect effect = new ConditionalRestrictionEffect( - new UnblockableSourceEffect(), + new CantBeBlockedSourceEffect(), new DefendingPlayerControlsCondition(new FilterArtifactPermanent())); - effect.setText("{this} is unblockable as long as defending player controls an artifact"); + effect.setText("{this} can't be blocked as long as defending player controls an artifact"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/VenserTheSojourner.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/VenserTheSojourner.java index 94374c58fb7..b432a0c9ca7 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/VenserTheSojourner.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/VenserTheSojourner.java @@ -45,7 +45,7 @@ import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.ExileTargetEffect; import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.ReturnFromExileEffect; -import mage.abilities.effects.common.combat.UnblockableAllEffect; +import mage.abilities.effects.common.combat.CantBeBlockedAllEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.cards.CardImpl; import mage.constants.Outcome; @@ -91,8 +91,8 @@ public class VenserTheSojourner extends CardImpl { ability1.addTarget(target); this.addAbility(ability1); - // -1: Creatures are unblockable this turn. - this.addAbility(new LoyaltyAbility(new UnblockableAllEffect(new FilterCreaturePermanent("Creatures"), Duration.EndOfTurn), -1)); + // -1: Creatures can't be blocked this turn. + this.addAbility(new LoyaltyAbility(new CantBeBlockedAllEffect(new FilterCreaturePermanent("Creatures"), Duration.EndOfTurn), -1)); // -8: You get an emblem with "Whenever you cast a spell, exile target permanent." LoyaltyAbility ability2 = new LoyaltyAbility(new GetEmblemEffect(new VenserTheSojournerEmblem()), -8); diff --git a/Mage.Sets/src/mage/sets/shadowmoor/DeepchannelMentor.java b/Mage.Sets/src/mage/sets/shadowmoor/DeepchannelMentor.java index 7aa0d2d0c35..01c19b17b0c 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/DeepchannelMentor.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/DeepchannelMentor.java @@ -35,7 +35,7 @@ import mage.constants.Zone; import mage.MageInt; import mage.ObjectColor; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.common.combat.UnblockableAllEffect; +import mage.abilities.effects.common.combat.CantBeBlockedAllEffect; import mage.cards.CardImpl; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; @@ -62,8 +62,8 @@ public class DeepchannelMentor extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - // Blue creatures you control are unblockable. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new UnblockableAllEffect(filter, Duration.WhileOnBattlefield))); + // Blue creatures you control can't be blocked. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedAllEffect(filter, Duration.WhileOnBattlefield))); } public DeepchannelMentor(final DeepchannelMentor card) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/GhastlordOfFugue.java b/Mage.Sets/src/mage/sets/shadowmoor/GhastlordOfFugue.java index 886b508b477..163d95b2907 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/GhastlordOfFugue.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/GhastlordOfFugue.java @@ -34,7 +34,7 @@ import mage.abilities.Ability; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.cards.Card; import mage.cards.CardImpl; import mage.constants.CardType; @@ -64,8 +64,8 @@ public class GhastlordOfFugue extends CardImpl { this.power = new MageInt(4); this.toughness = new MageInt(4); - // Ghastlord of Fugue is unblockable. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new UnblockableSourceEffect(Duration.WhileOnBattlefield))); + // Ghastlord of Fugue can't be blocked. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedSourceEffect(Duration.WhileOnBattlefield))); // Whenever Ghastlord of Fugue deals combat damage to a player, that player reveals his or her hand. You choose a card from it. That player exiles that card. this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new GhastlordOfFugueEffect(), false, true)); diff --git a/Mage.Sets/src/mage/sets/shadowmoor/InkfathomInfiltrator.java b/Mage.Sets/src/mage/sets/shadowmoor/InkfathomInfiltrator.java index 55d9681f211..a9774312c5c 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/InkfathomInfiltrator.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/InkfathomInfiltrator.java @@ -32,7 +32,7 @@ import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; import mage.abilities.common.CantBlockAbility; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; /** @@ -53,7 +53,7 @@ public class InkfathomInfiltrator extends CardImpl { this.toughness = new MageInt(1); this.addAbility(new CantBlockAbility()); - this.addAbility(new UnblockableAbility()); + this.addAbility(new CantBeBlockedSourceAbility()); } public InkfathomInfiltrator(final InkfathomInfiltrator card) { diff --git a/Mage.Sets/src/mage/sets/shadowmoor/SteelOfTheGodhead.java b/Mage.Sets/src/mage/sets/shadowmoor/SteelOfTheGodhead.java index 248e3a6e328..8858eb6e6e1 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/SteelOfTheGodhead.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/SteelOfTheGodhead.java @@ -36,12 +36,12 @@ import mage.abilities.decorator.ConditionalContinuousEffect; import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.Effect; import mage.abilities.effects.common.AttachEffect; -import mage.abilities.effects.common.combat.UnblockableAttachedEffect; +import mage.abilities.effects.common.combat.CantBeBlockedAttachedEffect; import mage.abilities.effects.common.continuous.BoostEnchantedEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.LifelinkAbility; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; import mage.constants.AttachmentType; import mage.constants.CardType; @@ -75,10 +75,10 @@ public class SteelOfTheGodhead extends CardImpl { SimpleStaticAbility whiteAbility = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new BoostEnchantedEffect(1, 1), new EnchantedCreatureColorCondition(ObjectColor.WHITE), "As long as enchanted creature is white, it gets +1/+1")); whiteAbility.addEffect(new ConditionalContinuousEffect(new GainAbilityAttachedEffect(LifelinkAbility.getInstance(), AttachmentType.AURA), new EnchantedCreatureColorCondition(ObjectColor.WHITE), "and has lifelink")); this.addAbility(whiteAbility); - // As long as enchanted creature is blue, it gets +1/+1 and is unblockable. + // As long as enchanted creature is blue, it gets +1/+1 and can't be blocked. SimpleStaticAbility blueAbility = new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new BoostEnchantedEffect(1, 1), new EnchantedCreatureColorCondition(ObjectColor.BLUE), "As long as enchanted creature is blue, it gets +1/+1")); - Effect effect = new ConditionalRestrictionEffect(new UnblockableAttachedEffect(AttachmentType.AURA), new EnchantedCreatureColorCondition(ObjectColor.BLUE)); - effect.setText("and is unblockable"); + Effect effect = new ConditionalRestrictionEffect(new CantBeBlockedAttachedEffect(AttachmentType.AURA), new EnchantedCreatureColorCondition(ObjectColor.BLUE)); + effect.setText("and can't be blocked"); blueAbility.addEffect(effect); this.addAbility(blueAbility); } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/JhessianInfiltrator.java b/Mage.Sets/src/mage/sets/shardsofalara/JhessianInfiltrator.java index 7443434a6ae..551218e8340 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/JhessianInfiltrator.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/JhessianInfiltrator.java @@ -32,7 +32,7 @@ import java.util.UUID; import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; /** @@ -50,7 +50,7 @@ public class JhessianInfiltrator extends CardImpl { this.color.setBlue(true); this.power = new MageInt(2); this.toughness = new MageInt(2); - this.addAbility(new UnblockableAbility()); + this.addAbility(new CantBeBlockedSourceAbility()); } public JhessianInfiltrator (final JhessianInfiltrator card) { diff --git a/Mage.Sets/src/mage/sets/tenth/CraftyPathmage.java b/Mage.Sets/src/mage/sets/tenth/CraftyPathmage.java index dee744ba2c2..e1c8885bf69 100644 --- a/Mage.Sets/src/mage/sets/tenth/CraftyPathmage.java +++ b/Mage.Sets/src/mage/sets/tenth/CraftyPathmage.java @@ -36,7 +36,7 @@ import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; -import mage.abilities.effects.common.combat.UnblockableTargetEffect; +import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; import mage.cards.CardImpl; import mage.filter.Filter; import mage.filter.common.FilterCreaturePermanent; @@ -64,8 +64,8 @@ public class CraftyPathmage extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - // {tap}: Target creature with power 2 or less is unblockable this turn. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UnblockableTargetEffect(), new TapSourceCost()); + // {tap}: Target creature with power 2 or less can't be blocked this turn. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CantBeBlockedTargetEffect(), new TapSourceCost()); ability.addTarget(new TargetCreaturePermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/tenth/ElvishChampion.java b/Mage.Sets/src/mage/sets/tenth/ElvishChampion.java index df9d93a3760..e0e3c41ebb5 100644 --- a/Mage.Sets/src/mage/sets/tenth/ElvishChampion.java +++ b/Mage.Sets/src/mage/sets/tenth/ElvishChampion.java @@ -60,7 +60,7 @@ public class ElvishChampion extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - // Other Elf creatures get +1/+1 and have forestwalk. (They're unblockable as long as defending player controls a Forest.) + // Other Elf creatures get +1/+1 and have forestwalk. (They can't be blocked as long as defending player controls a Forest.) this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1, 1, Duration.WhileOnBattlefield, filter, true))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(new ForestwalkAbility(), Duration.WhileOnBattlefield, filter, true))); } diff --git a/Mage.Sets/src/mage/sets/tenth/WhispersilkCloak.java b/Mage.Sets/src/mage/sets/tenth/WhispersilkCloak.java index d9d4b96816d..dd2145e8d4c 100644 --- a/Mage.Sets/src/mage/sets/tenth/WhispersilkCloak.java +++ b/Mage.Sets/src/mage/sets/tenth/WhispersilkCloak.java @@ -37,7 +37,7 @@ import mage.constants.Rarity; import mage.constants.Zone; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.GenericManaCost; -import mage.abilities.effects.common.combat.UnblockableAttachedEffect; +import mage.abilities.effects.common.combat.CantBeBlockedAttachedEffect; import mage.abilities.effects.common.continuous.GainAbilityAttachedEffect; import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.ShroudAbility; @@ -55,8 +55,8 @@ public class WhispersilkCloak extends CardImpl { this.expansionSetCode = "10E"; this.subtype.add("Equipment"); - // Equipped creature is unblockable and has shroud. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new UnblockableAttachedEffect(AttachmentType.EQUIPMENT))); + // Equipped creature can't be blocked and has shroud. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedAttachedEffect(AttachmentType.EQUIPMENT))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(ShroudAbility.getInstance(), AttachmentType.EQUIPMENT))); // Equip {2} this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2))); diff --git a/Mage.Sets/src/mage/sets/theros/AgentOfHorizons.java b/Mage.Sets/src/mage/sets/theros/AgentOfHorizons.java index 3ed71f44012..59649b28cc5 100644 --- a/Mage.Sets/src/mage/sets/theros/AgentOfHorizons.java +++ b/Mage.Sets/src/mage/sets/theros/AgentOfHorizons.java @@ -31,7 +31,7 @@ import java.util.UUID; import mage.MageInt; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Duration; @@ -55,7 +55,7 @@ public class AgentOfHorizons extends CardImpl { this.toughness = new MageInt(2); // {2}{U}: Agent of Horizons can't be blocked this turn. - this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new UnblockableSourceEffect(Duration.EndOfTurn), new ManaCostsImpl("{2}{U}"))); + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CantBeBlockedSourceEffect(Duration.EndOfTurn), new ManaCostsImpl("{2}{U}"))); } public AgentOfHorizons(final AgentOfHorizons card) { diff --git a/Mage.Sets/src/mage/sets/theros/AqueousForm.java b/Mage.Sets/src/mage/sets/theros/AqueousForm.java index 47446040cb9..31a555562fd 100644 --- a/Mage.Sets/src/mage/sets/theros/AqueousForm.java +++ b/Mage.Sets/src/mage/sets/theros/AqueousForm.java @@ -33,7 +33,7 @@ import mage.abilities.common.AttacksAttachedTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.keyword.ScryEffect; -import mage.abilities.effects.common.combat.UnblockableAttachedEffect; +import mage.abilities.effects.common.combat.CantBeBlockedAttachedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.constants.AttachmentType; @@ -64,7 +64,7 @@ public class AqueousForm extends CardImpl { Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); // Enchanted creature can't be blocked. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new UnblockableAttachedEffect(AttachmentType.AURA))); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedAttachedEffect(AttachmentType.AURA))); // Whenever enchanted creature attacks, scry 1. this.addAbility(new AttacksAttachedTriggeredAbility(new ScryEffect(1), AttachmentType.AURA,false)); diff --git a/Mage.Sets/src/mage/sets/theros/ThassaGodOfTheSea.java b/Mage.Sets/src/mage/sets/theros/ThassaGodOfTheSea.java index 424d14291e1..12b2c7fc137 100644 --- a/Mage.Sets/src/mage/sets/theros/ThassaGodOfTheSea.java +++ b/Mage.Sets/src/mage/sets/theros/ThassaGodOfTheSea.java @@ -37,8 +37,8 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.dynamicvalue.common.DevotionCount; import mage.abilities.effects.Effect; -import mage.abilities.effects.keyword.ScryEffect; import mage.abilities.effects.common.combat.CantBeBlockedTargetEffect; +import mage.abilities.effects.keyword.ScryEffect; import mage.abilities.effects.common.continuous.LoseCreatureTypeSourceEffect; import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; @@ -63,7 +63,6 @@ public class ThassaGodOfTheSea extends CardImpl { this.supertype.add("Legendary"); this.subtype.add("God"); - this.color.setBlue(true); this.power = new MageInt(5); this.toughness = new MageInt(5); diff --git a/Mage.Sets/src/mage/sets/timespiral/DeepSeaKraken.java b/Mage.Sets/src/mage/sets/timespiral/DeepSeaKraken.java index 58725443ce6..00dd1bbd34e 100644 --- a/Mage.Sets/src/mage/sets/timespiral/DeepSeaKraken.java +++ b/Mage.Sets/src/mage/sets/timespiral/DeepSeaKraken.java @@ -35,7 +35,7 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.effects.common.counter.RemoveCounterSourceEffect; import mage.abilities.keyword.SuspendAbility; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; @@ -64,8 +64,8 @@ public class DeepSeaKraken extends CardImpl { this.power = new MageInt(6); this.toughness = new MageInt(6); - // Deep-Sea Kraken is unblockable. - this.addAbility(new UnblockableAbility()); + // Deep-Sea Kraken can't be blocked. + this.addAbility(new CantBeBlockedSourceAbility()); // Suspend 9-{2}{U} this.addAbility(new SuspendAbility(9, new ManaCostsImpl("{2}{U}"), this)); // Whenever an opponent casts a spell, if Deep-Sea Kraken is suspended, remove a time counter from it. diff --git a/Mage.Sets/src/mage/sets/urzasdestiny/BubblingBeebles.java b/Mage.Sets/src/mage/sets/urzasdestiny/BubblingBeebles.java index 8b1d5d4a7a5..59b768e76a9 100644 --- a/Mage.Sets/src/mage/sets/urzasdestiny/BubblingBeebles.java +++ b/Mage.Sets/src/mage/sets/urzasdestiny/BubblingBeebles.java @@ -36,7 +36,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DefendingPlayerControlsCondition; import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.Effect; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; @@ -60,11 +60,11 @@ public class BubblingBeebles extends CardImpl { this.power = new MageInt(3); this.toughness = new MageInt(3); - // Bubbling Beebles is unblockable as long as defending player controls an enchantment. + // Bubbling Beebles can't be blocked as long as defending player controls an enchantment. Effect effect = new ConditionalRestrictionEffect( - new UnblockableSourceEffect(), + new CantBeBlockedSourceEffect(), new DefendingPlayerControlsCondition(filter)); - effect.setText("{this} is unblockable as long as defending player controls an enchantment"); + effect.setText("{this} can't be blocked 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 7695122be8d..1ad39bc9655 100644 --- a/Mage.Sets/src/mage/sets/urzaslegacy/BouncingBeebles.java +++ b/Mage.Sets/src/mage/sets/urzaslegacy/BouncingBeebles.java @@ -37,7 +37,7 @@ import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.DefendingPlayerControlsCondition; import mage.abilities.decorator.ConditionalRestrictionEffect; import mage.abilities.effects.Effect; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; import mage.cards.CardImpl; import mage.filter.common.FilterArtifactPermanent; @@ -55,11 +55,11 @@ public class BouncingBeebles extends CardImpl { this.power = new MageInt(2); this.toughness = new MageInt(2); - //Bouncing Beebles is unblockable as long as defending player controls an artifact. + //Bouncing Beebles can't be blocked as long as defending player controls an artifact. Effect effect = new ConditionalRestrictionEffect( - new UnblockableSourceEffect(), + new CantBeBlockedSourceEffect(), new DefendingPlayerControlsCondition(new FilterArtifactPermanent())); - effect.setText("{this} is unblockable as long as defending player controls an artifact"); + effect.setText("{this} can't be blocked as long as defending player controls an artifact"); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); } diff --git a/Mage.Sets/src/mage/sets/urzassaga/CloakOfMists.java b/Mage.Sets/src/mage/sets/urzassaga/CloakOfMists.java index 5c319d88935..df3e1566711 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/CloakOfMists.java +++ b/Mage.Sets/src/mage/sets/urzassaga/CloakOfMists.java @@ -35,7 +35,7 @@ import mage.constants.Rarity; import mage.constants.Zone; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.common.AttachEffect; -import mage.abilities.effects.common.combat.UnblockableAttachedEffect; +import mage.abilities.effects.common.combat.CantBeBlockedAttachedEffect; import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.target.TargetPermanent; @@ -59,8 +59,8 @@ public class CloakOfMists extends CardImpl { this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature)); this.addAbility(new EnchantAbility(auraTarget.getTargetName())); - // Enchanted creature is unblockable. - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new UnblockableAttachedEffect(AttachmentType.AURA))); + // Enchanted creature can't be blocked. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedAttachedEffect(AttachmentType.AURA))); } public CloakOfMists(final CloakOfMists card) { diff --git a/Mage.Sets/src/mage/sets/worldwake/CreepingTarPit.java b/Mage.Sets/src/mage/sets/worldwake/CreepingTarPit.java index 4d07d582a69..b30aad635e6 100644 --- a/Mage.Sets/src/mage/sets/worldwake/CreepingTarPit.java +++ b/Mage.Sets/src/mage/sets/worldwake/CreepingTarPit.java @@ -38,7 +38,7 @@ import mage.abilities.common.EntersBattlefieldTappedAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.abilities.mana.BlackManaAbility; import mage.abilities.mana.BlueManaAbility; import mage.cards.CardImpl; @@ -61,7 +61,7 @@ public class CreepingTarPit extends CardImpl { this.addAbility(new BlueManaAbility()); this.addAbility(new BlackManaAbility()); - // {1}{U}{B}: Until end of turn, Creeping Tar Pit becomes a 3/2 blue and black Elemental creature and is unblockable. It's still a land. + // {1}{U}{B}: Until end of turn, Creeping Tar Pit becomes a 3/2 blue and black Elemental creature and can't be blocked. It's still a land. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new CreepingTarPitToken(), "land", Duration.EndOfTurn), new ManaCostsImpl("{1}{U}{B}"))); } @@ -78,13 +78,13 @@ public class CreepingTarPit extends CardImpl { class CreepingTarPitToken extends Token { public CreepingTarPitToken() { - super("", "3/2 blue and black Elemental creature and is unblockable"); + super("", "3/2 blue and black Elemental creature and can't be blocked"); cardType.add(CardType.CREATURE); subtype.add("Elemental"); color.setBlue(true); color.setBlack(true); power = new MageInt(3); toughness = new MageInt(2); - this.addAbility(new UnblockableAbility()); + this.addAbility(new CantBeBlockedSourceAbility()); } } diff --git a/Mage.Sets/src/mage/sets/zendikar/AetherFigment.java b/Mage.Sets/src/mage/sets/zendikar/AetherFigment.java index 5cd3ed29184..b3bae81f7be 100644 --- a/Mage.Sets/src/mage/sets/zendikar/AetherFigment.java +++ b/Mage.Sets/src/mage/sets/zendikar/AetherFigment.java @@ -38,7 +38,7 @@ import mage.abilities.condition.common.KickedCondition; import mage.abilities.decorator.ConditionalOneShotEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.KickerAbility; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.cards.CardImpl; import mage.counters.CounterType; @@ -58,8 +58,8 @@ public class AetherFigment extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - // AEther Figment is unblockable. - this.addAbility(new UnblockableAbility()); + // AEther Figment can't be blocked. + this.addAbility(new CantBeBlockedSourceAbility()); // Kicker {3} this.addAbility(new KickerAbility("{3}")); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/AEtherFigmentTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/AEtherFigmentTest.java index 798ad7a1373..cebf7db41d2 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/AEtherFigmentTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/AEtherFigmentTest.java @@ -16,7 +16,7 @@ public class AEtherFigmentTest extends CardTestPlayerBase { Creature - Illusion 1/1 Kicker {3} (You may pay an additional as you cast this spell.) - AEther Figment is unblockable. + AEther Figment can't be blocked. If AEther Figment was kicked, it enters the battlefield with two +1/+1 counters on it. */ @Test diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/copy/PhantasmalImageTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/copy/PhantasmalImageTest.java index f803d1fb73b..2d805bbd081 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/copy/PhantasmalImageTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/copy/PhantasmalImageTest.java @@ -315,7 +315,7 @@ public class PhantasmalImageTest extends CardTestPlayerBase { // Whenever Frost Titan enters the battlefield or attacks, tap target permanent. It doesn't untap during its controller's next untap step. addCard(Zone.BATTLEFIELD, playerA, "Frost Titan"); addCard(Zone.HAND, playerA, "Terror"); - // {1}{U} - Target creature gains shroud until end of turn and is unblockable this turn. + // {1}{U} - Target creature gains shroud until end of turn and can't be blocked this turn. addCard(Zone.HAND, playerA, "Veil of Secrecy"); addCard(Zone.BATTLEFIELD, playerA, "Swamp", 3); addCard(Zone.BATTLEFIELD, playerA, "Island", 2); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/restriction/ElvishChampionForestwalkTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/restriction/ElvishChampionForestwalkTest.java index 277d4ae24d9..7b6f8439ac6 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/restriction/ElvishChampionForestwalkTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/restriction/ElvishChampionForestwalkTest.java @@ -41,7 +41,7 @@ import org.mage.test.serverside.base.CardTestPlayerBase; /* * Elvish Champion * Creature — Elf 2/2, 1GG - * Other Elf creatures get +1/+1 and have forestwalk. (They're unblockable as long as defending player controls a Forest.) + * Other Elf creatures get +1/+1 and have forestwalk. (They can't be blocked as long as defending player controls a Forest.) */ public class ElvishChampionForestwalkTest extends CardTestPlayerBase { diff --git a/Mage.Tests/src/test/java/org/mage/test/combat/AttackBlockRestrictionsTest.java b/Mage.Tests/src/test/java/org/mage/test/combat/AttackBlockRestrictionsTest.java index 379b1debbd9..e515286e02e 100644 --- a/Mage.Tests/src/test/java/org/mage/test/combat/AttackBlockRestrictionsTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/combat/AttackBlockRestrictionsTest.java @@ -224,10 +224,10 @@ public class AttackBlockRestrictionsTest extends CardTestPlayerBase { } /** - * Tests Unblockable + * Tests can't be blocked */ @Test - public void testUnblockable() { + public void testCantBeBlocked() { addCard(Zone.BATTLEFIELD, playerB, "Blighted Agent"); addCard(Zone.BATTLEFIELD, playerA, "Blighted Agent"); @@ -246,7 +246,7 @@ public class AttackBlockRestrictionsTest extends CardTestPlayerBase { } @Test - public void testUnblockableTormentedSoul() { + public void testCantBeBlockedTormentedSoul() { addCard(Zone.BATTLEFIELD, playerB, "Tormented Soul"); addCard(Zone.BATTLEFIELD, playerA, "Memnite"); diff --git a/Mage/src/mage/abilities/effects/common/combat/UnblockableAllEffect.java b/Mage/src/mage/abilities/effects/common/combat/CantBeBlockedAllEffect.java similarity index 83% rename from Mage/src/mage/abilities/effects/common/combat/UnblockableAllEffect.java rename to Mage/src/mage/abilities/effects/common/combat/CantBeBlockedAllEffect.java index 419a47cadd2..0ca4cc2b331 100644 --- a/Mage/src/mage/abilities/effects/common/combat/UnblockableAllEffect.java +++ b/Mage/src/mage/abilities/effects/common/combat/CantBeBlockedAllEffect.java @@ -38,28 +38,28 @@ import mage.game.permanent.Permanent; * * @author North */ -public class UnblockableAllEffect extends RestrictionEffect { +public class CantBeBlockedAllEffect extends RestrictionEffect { - private FilterPermanent filter; + private final FilterPermanent filter; - public UnblockableAllEffect(FilterPermanent filter, Duration duration) { + public CantBeBlockedAllEffect(FilterPermanent filter, Duration duration) { super(duration); this.filter = filter; - this.staticText = filter.getMessage() + " are unblockable"; + this.staticText = filter.getMessage() + " can't be blocked"; if (duration.equals(Duration.EndOfTurn)) { this.staticText += " this turn"; } } - public UnblockableAllEffect(UnblockableAllEffect effect) { + public CantBeBlockedAllEffect(CantBeBlockedAllEffect effect) { super(effect); this.filter = effect.filter; } @Override - public UnblockableAllEffect copy() { - return new UnblockableAllEffect(this); + public CantBeBlockedAllEffect copy() { + return new CantBeBlockedAllEffect(this); } @Override diff --git a/Mage/src/mage/abilities/effects/common/combat/UnblockableAttachedEffect.java b/Mage/src/mage/abilities/effects/common/combat/CantBeBlockedAttachedEffect.java similarity index 83% rename from Mage/src/mage/abilities/effects/common/combat/UnblockableAttachedEffect.java rename to Mage/src/mage/abilities/effects/common/combat/CantBeBlockedAttachedEffect.java index 9730feeffcb..acf01412d8a 100644 --- a/Mage/src/mage/abilities/effects/common/combat/UnblockableAttachedEffect.java +++ b/Mage/src/mage/abilities/effects/common/combat/CantBeBlockedAttachedEffect.java @@ -27,10 +27,10 @@ */ package mage.abilities.effects.common.combat; -import mage.constants.AttachmentType; -import mage.constants.Duration; import mage.abilities.Ability; import mage.abilities.effects.RestrictionEffect; +import mage.constants.AttachmentType; +import mage.constants.Duration; import mage.game.Game; import mage.game.permanent.Permanent; @@ -38,24 +38,24 @@ import mage.game.permanent.Permanent; * * @author North */ -public class UnblockableAttachedEffect extends RestrictionEffect { +public class CantBeBlockedAttachedEffect extends RestrictionEffect { - public UnblockableAttachedEffect(AttachmentType attachmentType) { + public CantBeBlockedAttachedEffect(AttachmentType attachmentType) { super(Duration.WhileOnBattlefield); if (attachmentType.equals(AttachmentType.AURA)) { - this.staticText = "Enchanted creature is unblockable"; + this.staticText = "Enchanted creature can't be blocked"; } else { - this.staticText = "Equiped creature is unblockable"; + this.staticText = "Equiped creature can't be blocked"; } } - public UnblockableAttachedEffect(UnblockableAttachedEffect effect) { + public CantBeBlockedAttachedEffect(CantBeBlockedAttachedEffect effect) { super(effect); } @Override - public UnblockableAttachedEffect copy() { - return new UnblockableAttachedEffect(this); + public CantBeBlockedAttachedEffect copy() { + return new CantBeBlockedAttachedEffect(this); } @Override diff --git a/Mage/src/mage/abilities/effects/common/combat/UnblockableSourceEffect.java b/Mage/src/mage/abilities/effects/common/combat/CantBeBlockedSourceEffect.java similarity index 84% rename from Mage/src/mage/abilities/effects/common/combat/UnblockableSourceEffect.java rename to Mage/src/mage/abilities/effects/common/combat/CantBeBlockedSourceEffect.java index 92a5fb51b52..269c6f3c395 100644 --- a/Mage/src/mage/abilities/effects/common/combat/UnblockableSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/combat/CantBeBlockedSourceEffect.java @@ -27,9 +27,9 @@ */ package mage.abilities.effects.common.combat; -import mage.constants.Duration; import mage.abilities.Ability; import mage.abilities.effects.RestrictionEffect; +import mage.constants.Duration; import mage.game.Game; import mage.game.permanent.Permanent; @@ -37,26 +37,26 @@ import mage.game.permanent.Permanent; * * @author North */ -public class UnblockableSourceEffect extends RestrictionEffect { +public class CantBeBlockedSourceEffect extends RestrictionEffect { - public UnblockableSourceEffect() { + public CantBeBlockedSourceEffect() { this(Duration.WhileOnBattlefield); } - public UnblockableSourceEffect(Duration duration) { + public CantBeBlockedSourceEffect(Duration duration) { super(duration); - this.staticText = "{this} is unblockable"; + this.staticText = "{this} can't be blocked"; if (Duration.EndOfTurn.equals(this.duration)) { this.staticText += " this turn"; } } - public UnblockableSourceEffect(UnblockableSourceEffect effect) { + public CantBeBlockedSourceEffect(CantBeBlockedSourceEffect effect) { super(effect); } @Override - public UnblockableSourceEffect copy() { - return new UnblockableSourceEffect(this); + public CantBeBlockedSourceEffect copy() { + return new CantBeBlockedSourceEffect(this); } @Override diff --git a/Mage/src/mage/abilities/effects/common/combat/CantBeBlockedTargetEffect.java b/Mage/src/mage/abilities/effects/common/combat/CantBeBlockedTargetEffect.java index 721b2177abf..5b664db1c29 100644 --- a/Mage/src/mage/abilities/effects/common/combat/CantBeBlockedTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/combat/CantBeBlockedTargetEffect.java @@ -35,56 +35,68 @@ import mage.constants.Outcome; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.Target; +import mage.util.CardUtil; /** * - * @author LevelX2 + * @author North */ - public class CantBeBlockedTargetEffect extends RestrictionEffect { + public CantBeBlockedTargetEffect() { + this(Duration.EndOfTurn); + } + public CantBeBlockedTargetEffect(Duration duration) { super(duration, Outcome.Benefit); } - public CantBeBlockedTargetEffect(final CantBeBlockedTargetEffect effect) { + public CantBeBlockedTargetEffect(CantBeBlockedTargetEffect effect) { super(effect); } - @Override - public boolean applies(Permanent permanent, Ability source, Game game) { - return this.getTargetPointer().getTargets(game, source).contains(permanent.getId()); - } - - @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { - return false; - } - @Override public CantBeBlockedTargetEffect copy() { return new CantBeBlockedTargetEffect(this); } + @Override + public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { + return false; + } + + @Override + public boolean applies(Permanent permanent, Ability source, Game game) { + return getTargetPointer().getTargets(game, source).contains(permanent.getId()); + } + @Override public String getText(Mode mode) { if (staticText != null && !staticText.isEmpty()) { return staticText; } - StringBuilder sb = new StringBuilder(); - Target target = mode.getTargets().get(0); - if(target.getNumberOfTargets() > 1){ - if (target.getNumberOfTargets() < target.getMaxNumberOfTargets()) { - sb.append("Up to"); - } - sb.append(target.getMaxNumberOfTargets()).append(" target ").append(target.getTargetName()).append(" gain "); - } else { - sb.append("Target ").append(target.getTargetName()).append(" can't be blocked"); - } - if (duration.equals(Duration.EndOfTurn)) { - sb.append(" this turn"); + if (mode.getTargets().isEmpty()) { + return ""; } + StringBuilder sb = new StringBuilder(); + Target target = mode.getTargets().get(0); + if (target.getMaxNumberOfTargets() > 1) { + if (target.getMaxNumberOfTargets() != target.getNumberOfTargets()) { + sb.append("up to "); + } + sb.append(CardUtil.numberToText(target.getMaxNumberOfTargets())).append(" "); + } + sb.append("target ").append(mode.getTargets().get(0).getTargetName()); + if (target.getMaxNumberOfTargets() > 1) { + sb.append("s can't be blocked"); + } else { + sb.append(" can't be blocked"); + } + + if (Duration.EndOfTurn.equals(this.duration)) { + sb.append(" this turn"); + } return sb.toString(); } } diff --git a/Mage/src/mage/abilities/effects/common/combat/UnblockableTargetEffect.java b/Mage/src/mage/abilities/effects/common/combat/UnblockableTargetEffect.java deleted file mode 100644 index d146b26fdfd..00000000000 --- a/Mage/src/mage/abilities/effects/common/combat/UnblockableTargetEffect.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * 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.combat; - -import mage.constants.Duration; -import mage.abilities.Ability; -import mage.abilities.Mode; -import mage.abilities.effects.RestrictionEffect; -import mage.game.Game; -import mage.game.permanent.Permanent; -import mage.target.Target; -import mage.util.CardUtil; - -/** - * - * @author North - */ -public class UnblockableTargetEffect extends RestrictionEffect { - - public UnblockableTargetEffect() { - super(Duration.EndOfTurn); - } - - public UnblockableTargetEffect(UnblockableTargetEffect effect) { - super(effect); - } - - @Override - public UnblockableTargetEffect copy() { - return new UnblockableTargetEffect(this); - } - - @Override - public boolean canBeBlocked(Permanent attacker, Permanent blocker, Ability source, Game game) { - return false; - } - - @Override - public boolean applies(Permanent permanent, Ability source, Game game) { - return this.targetPointer.getTargets(game, source).contains(permanent.getId()); - } - - @Override - public String getText(Mode mode) { - if (staticText != null && !staticText.isEmpty()) { - return staticText; - } - if (mode.getTargets().isEmpty()) { - return ""; - } - - StringBuilder sb = new StringBuilder(); - Target target = mode.getTargets().get(0); - if (target.getMaxNumberOfTargets() > 1) { - if (target.getMaxNumberOfTargets() != target.getNumberOfTargets()) { - sb.append("up to "); - } - sb.append(CardUtil.numberToText(target.getMaxNumberOfTargets())).append(" "); - } - sb.append("target ").append(mode.getTargets().get(0).getTargetName()); - if (target.getMaxNumberOfTargets() > 1) { - sb.append("s are unblockable"); - } else { - sb.append(" is unblockable"); - } - - if (Duration.EndOfTurn.equals(this.duration)) { - sb.append(" this turn"); - } - - return sb.toString(); - } -} diff --git a/Mage/src/mage/abilities/keyword/UnblockableAbility.java b/Mage/src/mage/abilities/keyword/CantBeBlockedSourceAbility.java similarity index 81% rename from Mage/src/mage/abilities/keyword/UnblockableAbility.java rename to Mage/src/mage/abilities/keyword/CantBeBlockedSourceAbility.java index f3936a50af6..85045214e9e 100644 --- a/Mage/src/mage/abilities/keyword/UnblockableAbility.java +++ b/Mage/src/mage/abilities/keyword/CantBeBlockedSourceAbility.java @@ -29,31 +29,31 @@ package mage.abilities.keyword; import mage.abilities.EvasionAbility; import mage.abilities.effects.Effect; -import mage.abilities.effects.common.combat.UnblockableSourceEffect; +import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect; /** * @author BetaSteward_at_googlemail.com */ -public class UnblockableAbility extends EvasionAbility { +public class CantBeBlockedSourceAbility extends EvasionAbility { - public UnblockableAbility() { + public CantBeBlockedSourceAbility() { this(""); } - public UnblockableAbility(String ruleText) { - Effect effect = new UnblockableSourceEffect(); + public CantBeBlockedSourceAbility(String ruleText) { + Effect effect = new CantBeBlockedSourceEffect(); if (ruleText != null && !ruleText.isEmpty()) { effect.setText(ruleText); } this.addEffect(effect); } - private UnblockableAbility(UnblockableAbility ability) { + private CantBeBlockedSourceAbility(CantBeBlockedSourceAbility ability) { super(ability); } @Override - public UnblockableAbility copy() { - return new UnblockableAbility(this); + public CantBeBlockedSourceAbility copy() { + return new CantBeBlockedSourceAbility(this); } } diff --git a/Mage/src/mage/util/trace/TraceUtil.java b/Mage/src/mage/util/trace/TraceUtil.java index acd2d91db77..efde6c4d96f 100644 --- a/Mage/src/mage/util/trace/TraceUtil.java +++ b/Mage/src/mage/util/trace/TraceUtil.java @@ -10,7 +10,7 @@ import mage.abilities.effects.ContinuousEffectsList; import mage.abilities.effects.RestrictionEffect; import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.ReachAbility; -import mage.abilities.keyword.UnblockableAbility; +import mage.abilities.keyword.CantBeBlockedSourceAbility; import mage.constants.Zone; import mage.game.Game; import mage.game.combat.Combat; @@ -65,11 +65,11 @@ public class TraceUtil { } } } - if (hasUnblockable(attacker)) { + if (cantBeBlocked(attacker)) { if (group.getBlockers().size() > 0) { Permanent blocker = game.getPermanent(group.getBlockers().get(0)); if (blocker != null) { - log.warn("Found unblockable creature blocked by some other creature"); + log.warn("Found creature that can't be blocked by some other creature"); traceCombat(game, attacker, blocker); } } @@ -110,9 +110,9 @@ public class TraceUtil { return false; } - private static boolean hasUnblockable(Permanent permanent) { + private static boolean cantBeBlocked(Permanent permanent) { for (Ability ability : permanent.getAbilities()) { - if (ability instanceof UnblockableAbility) { + if (ability instanceof CantBeBlockedSourceAbility) { return true; } }