diff --git a/Mage.Sets/src/mage/cards/b/BlacksmithsTalent.java b/Mage.Sets/src/mage/cards/b/BlacksmithsTalent.java index 640f18a2487..5dbd9b4a5d1 100644 --- a/Mage.Sets/src/mage/cards/b/BlacksmithsTalent.java +++ b/Mage.Sets/src/mage/cards/b/BlacksmithsTalent.java @@ -1,7 +1,6 @@ package mage.cards.b; import mage.abilities.Ability; -import mage.abilities.triggers.BeginningOfCombatTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.condition.common.MyTurnCondition; @@ -14,6 +13,7 @@ import mage.abilities.keyword.ClassLevelAbility; import mage.abilities.keyword.ClassReminderAbility; import mage.abilities.keyword.DoubleStrikeAbility; import mage.abilities.keyword.HasteAbility; +import mage.abilities.triggers.BeginningOfCombatTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; @@ -74,7 +74,7 @@ public final class BlacksmithsTalent extends CardImpl { DoubleStrikeAbility.getInstance(), Duration.WhileOnBattlefield, filter2 ), MyTurnCondition.instance, "during your turn, equipped creatures you control have double strike")); ability.addEffect(new ConditionalContinuousEffect(new GainAbilityControlledEffect( - HasteAbility.getInstance(), Duration.WhileOnBattlefield + HasteAbility.getInstance(), Duration.WhileOnBattlefield, filter2 ), MyTurnCondition.instance, "and haste")); this.addAbility(new SimpleStaticAbility(new GainClassAbilitySourceEffect(ability, 3))); } diff --git a/Mage.Sets/src/mage/cards/b/BorosCharm.java b/Mage.Sets/src/mage/cards/b/BorosCharm.java index 4a714829ab5..585c00f2995 100644 --- a/Mage.Sets/src/mage/cards/b/BorosCharm.java +++ b/Mage.Sets/src/mage/cards/b/BorosCharm.java @@ -2,7 +2,6 @@ package mage.cards.b; import mage.abilities.Mode; import mage.abilities.effects.common.DamageTargetEffect; -import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; import mage.abilities.keyword.DoubleStrikeAbility; @@ -11,6 +10,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.filter.StaticFilters; import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetPlayerOrPlaneswalker; @@ -27,10 +27,12 @@ public final class BorosCharm extends CardImpl { //Choose one - Boros Charm deals 4 damage to target player this.getSpellAbility().addEffect(new DamageTargetEffect(4)); this.getSpellAbility().addTarget(new TargetPlayerOrPlaneswalker()); + //or permanents you control are indestructible this turn this.getSpellAbility().addMode(new Mode(new GainAbilityControlledEffect( - IndestructibleAbility.getInstance(), Duration.EndOfTurn + IndestructibleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS ))); + //or target creature gains double strike until end of turn. Mode mode2 = new Mode(new GainAbilityTargetEffect(DoubleStrikeAbility.getInstance(), Duration.EndOfTurn)); mode2.addTarget(new TargetCreaturePermanent()); diff --git a/Mage.Sets/src/mage/cards/b/BulwarkOx.java b/Mage.Sets/src/mage/cards/b/BulwarkOx.java index dcb39c1a2a8..a438345f532 100644 --- a/Mage.Sets/src/mage/cards/b/BulwarkOx.java +++ b/Mage.Sets/src/mage/cards/b/BulwarkOx.java @@ -16,6 +16,9 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.counters.CounterType; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.CounterAnyPredicate; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -25,6 +28,12 @@ import java.util.UUID; */ public final class BulwarkOx extends CardImpl { + private static final FilterPermanent filter = new FilterCreaturePermanent(); + + static { + filter.add(CounterAnyPredicate.instance); + } + public BulwarkOx(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{W}"); @@ -40,10 +49,10 @@ public final class BulwarkOx extends CardImpl { // Sacrifice this creature: Creatures you control with counters on them gain hexproof and indestructible until end of turn. ability = new SimpleActivatedAbility(new GainAbilityControlledEffect( - HexproofAbility.getInstance(), Duration.EndOfTurn + HexproofAbility.getInstance(), Duration.EndOfTurn, filter ).setText("creatures you control with counters on them gain hexproof"), new SacrificeSourceCost()); ability.addEffect(new GainAbilityControlledEffect( - IndestructibleAbility.getInstance(), Duration.EndOfTurn + IndestructibleAbility.getInstance(), Duration.EndOfTurn, filter ).setText("and indestructible until end of turn")); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/d/DawngladeRegent.java b/Mage.Sets/src/mage/cards/d/DawngladeRegent.java index fc56d256dda..432ad2431cf 100644 --- a/Mage.Sets/src/mage/cards/d/DawngladeRegent.java +++ b/Mage.Sets/src/mage/cards/d/DawngladeRegent.java @@ -14,6 +14,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; +import mage.filter.StaticFilters; import java.util.UUID; @@ -35,7 +36,7 @@ public final class DawngladeRegent extends CardImpl { // As long as you're the monarch, permanents you control have hexproof. this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect( new GainAbilityControlledEffect( - HexproofAbility.getInstance(), Duration.WhileOnBattlefield + HexproofAbility.getInstance(), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENTS ), MonarchIsSourceControllerCondition.instance, "as long as you're the monarch, permanents you control have hexproof" ))); diff --git a/Mage.Sets/src/mage/cards/d/DawnsTruce.java b/Mage.Sets/src/mage/cards/d/DawnsTruce.java index ce370569793..27ad5fe692d 100644 --- a/Mage.Sets/src/mage/cards/d/DawnsTruce.java +++ b/Mage.Sets/src/mage/cards/d/DawnsTruce.java @@ -13,6 +13,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.GiftType; +import mage.filter.StaticFilters; import java.util.UUID; @@ -32,11 +33,12 @@ public final class DawnsTruce extends CardImpl { HexproofAbility.getInstance(), Duration.EndOfTurn ).setText("you")); this.getSpellAbility().addEffect(new GainAbilityControlledEffect( - HexproofAbility.getInstance(), Duration.EndOfTurn + HexproofAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS ).concatBy("and")); this.getSpellAbility().addEffect(new ConditionalOneShotEffect( new AddContinuousEffectToGame(new GainAbilityControlledEffect( - IndestructibleAbility.getInstance(), Duration.EndOfTurn + IndestructibleAbility.getInstance(), Duration.EndOfTurn, + StaticFilters.FILTER_PERMANENTS )), GiftWasPromisedCondition.TRUE, "if the gift was promised, " + "permanents you control also gain indestructible until end of turn" )); diff --git a/Mage.Sets/src/mage/cards/d/DrivenDespair.java b/Mage.Sets/src/mage/cards/d/DrivenDespair.java index 1b10535809d..abbd95fab88 100644 --- a/Mage.Sets/src/mage/cards/d/DrivenDespair.java +++ b/Mage.Sets/src/mage/cards/d/DrivenDespair.java @@ -1,8 +1,6 @@ package mage.cards.d; -import java.util.UUID; -import mage.abilities.TriggeredAbility; import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; @@ -17,8 +15,9 @@ import mage.constants.Duration; import mage.constants.SpellAbilityType; import mage.filter.StaticFilters; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class DrivenDespair extends SplitCard { @@ -27,26 +26,27 @@ public final class DrivenDespair extends SplitCard { super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{1}{G}", "{1}{B}", SpellAbilityType.SPLIT_AFTERMATH); // Until end of turn, creatures you control gain trample and "Whenever this creature deals combat damage to a player, draw a card." - getLeftHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect( - TrampleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES) - .setText("Until end of turn, creatures you control gain trample")); - TriggeredAbility ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DrawCardSourceControllerEffect(1), false); - getLeftHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(ability, Duration.EndOfTurn) - .setText("\"Whenever this creature deals combat damage to a player, draw a card.\"") - .concatBy("and")); + this.getLeftHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect( + TrampleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES + ).setText("Until end of turn, creatures you control gain trample")); + this.getLeftHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect( + new DealsCombatDamageToAPlayerTriggeredAbility(new DrawCardSourceControllerEffect(1), false), + Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES + ).setText("\"Whenever this creature deals combat damage to a player, draw a card.\"").concatBy("and")); // Despair {1}{B} // Sorcery // Aftermath - getRightHalfCard().addAbility(new AftermathAbility().setRuleAtTheTop(true)); + this.getRightHalfCard().addAbility(new AftermathAbility().setRuleAtTheTop(true)); // Until end of turn, creatures you control gain menace and "Whenever this creature deals combat damage to a player, that player discards a card." - getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect( - new MenaceAbility(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES) - .setText("Until end of turn, creatures you control gain menace")); - ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DiscardTargetEffect(1), false, true); - getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(ability, Duration.EndOfTurn, StaticFilters.FILTER_CONTROLLED_CREATURES) - .setText("\"Whenever this creature deals combat damage to a player, that player discards a card.\"") - .concatBy("and")); + this.getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect( + new MenaceAbility(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES + ).setText("Until end of turn, creatures you control gain menace")); + this.getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect( + new DealsCombatDamageToAPlayerTriggeredAbility( + new DiscardTargetEffect(1), false, true + ), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT_CREATURES + ).setText("\"Whenever this creature deals combat damage to a player, that player discards a card.\"").concatBy("and")); } diff --git a/Mage.Sets/src/mage/cards/f/FaithsShield.java b/Mage.Sets/src/mage/cards/f/FaithsShield.java index 86450780d32..fa78a4a0f78 100644 --- a/Mage.Sets/src/mage/cards/f/FaithsShield.java +++ b/Mage.Sets/src/mage/cards/f/FaithsShield.java @@ -1,7 +1,6 @@ package mage.cards.f; -import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; import mage.abilities.condition.common.FatefulHourCondition; @@ -17,13 +16,15 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; import mage.filter.FilterCard; +import mage.filter.StaticFilters; import mage.filter.predicate.mageobject.ColorPredicate; import mage.game.Game; import mage.players.Player; import mage.target.common.TargetControlledPermanent; +import java.util.UUID; + /** - * * @author BetaSteward */ public final class FaithsShield extends CardImpl { @@ -63,29 +64,25 @@ class FaithsShieldEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); MageObject mageObject = game.getObject(source); - if (controller != null && mageObject != null) { - if (FatefulHourCondition.instance.apply(game, source)) { - ChoiceColor choice = new ChoiceColor(); - if (!controller.choose(Outcome.Protect, choice, game)) { - return false; - } - if (choice.getColor() != null) { - game.informPlayers(mageObject.getLogName() + ": " + controller.getLogName() + " has chosen " + choice.getChoice()); - FilterCard filter = new FilterCard(); - filter.add(new ColorPredicate(choice.getColor())); - filter.setMessage(choice.getChoice()); - Ability ability = new ProtectionAbility(filter); - game.addEffect(new GainAbilityControlledEffect(ability, Duration.EndOfTurn), source); - game.addEffect(new GainAbilityControllerEffect(ability, Duration.EndOfTurn), source); - return true; - } - } else { - game.addEffect(new GainProtectionFromColorTargetEffect(Duration.EndOfTurn), source); - return true; - } - + if (controller == null || mageObject == null) { + return false; } - return false; + if (!FatefulHourCondition.instance.apply(game, source)) { + game.addEffect(new GainProtectionFromColorTargetEffect(Duration.EndOfTurn), source); + return true; + } + ChoiceColor choice = new ChoiceColor(); + if (!controller.choose(Outcome.Protect, choice, game) || choice.getColor() == null) { + return false; + } + game.informPlayers(mageObject.getLogName() + ": " + controller.getLogName() + " has chosen " + choice.getChoice()); + FilterCard filter = new FilterCard(); + filter.add(new ColorPredicate(choice.getColor())); + filter.setMessage(choice.getChoice()); + Ability ability = new ProtectionAbility(filter); + game.addEffect(new GainAbilityControlledEffect(ability, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENT), source); + game.addEffect(new GainAbilityControllerEffect(ability, Duration.EndOfTurn), source); + return true; } @Override diff --git a/Mage.Sets/src/mage/cards/f/FlameFusillade.java b/Mage.Sets/src/mage/cards/f/FlameFusillade.java index 1581f9b7e16..140d008fe84 100644 --- a/Mage.Sets/src/mage/cards/f/FlameFusillade.java +++ b/Mage.Sets/src/mage/cards/f/FlameFusillade.java @@ -1,6 +1,5 @@ package mage.cards.f; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; @@ -10,22 +9,23 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; -import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.target.common.TargetAnyTarget; +import java.util.UUID; + /** - * * @author Loki */ public final class FlameFusillade extends CardImpl { public FlameFusillade(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{3}{R}"); + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{R}"); // Until end of turn, permanents you control gain "{tap}: This permanent deals 1 damage to any target." Ability gainedAbility = new SimpleActivatedAbility(new DamageTargetEffect(1, "this permanent"), new TapSourceCost()); gainedAbility.addTarget(new TargetAnyTarget()); - this.getSpellAbility().addEffect(new GainAbilityControlledEffect(gainedAbility, Duration.EndOfTurn).withDurationRuleAtStart(true)); + this.getSpellAbility().addEffect(new GainAbilityControlledEffect(gainedAbility, Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS).withDurationRuleAtStart(true)); } private FlameFusillade(final FlameFusillade card) { diff --git a/Mage.Sets/src/mage/cards/g/GorMuldrakAmphinologist.java b/Mage.Sets/src/mage/cards/g/GorMuldrakAmphinologist.java index 053711606b3..0de2f5d0c8b 100644 --- a/Mage.Sets/src/mage/cards/g/GorMuldrakAmphinologist.java +++ b/Mage.Sets/src/mage/cards/g/GorMuldrakAmphinologist.java @@ -2,12 +2,12 @@ package mage.cards.g; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControllerEffect; import mage.abilities.keyword.ProtectionAbility; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; @@ -45,7 +45,7 @@ public final class GorMuldrakAmphinologist extends CardImpl { new GainAbilityControllerEffect(new ProtectionAbility(filter)).setText("you") ); ability.addEffect(new GainAbilityControlledEffect( - new ProtectionAbility(filter), Duration.WhileOnBattlefield + new ProtectionAbility(filter), Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENTS ).concatBy("and")); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/l/LazotepPlating.java b/Mage.Sets/src/mage/cards/l/LazotepPlating.java index d192d8f2eeb..99cf8ca0765 100644 --- a/Mage.Sets/src/mage/cards/l/LazotepPlating.java +++ b/Mage.Sets/src/mage/cards/l/LazotepPlating.java @@ -1,17 +1,18 @@ package mage.cards.l; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.effects.common.continuous.GainAbilityControllerEffect; import mage.abilities.effects.keyword.AmassEffect; import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.SubType; +import mage.filter.StaticFilters; import java.util.UUID; -import mage.abilities.effects.Effect; -import mage.abilities.effects.common.continuous.GainAbilityControllerEffect; -import mage.constants.SubType; /** * @author TheElk801 @@ -29,7 +30,7 @@ public final class LazotepPlating extends CardImpl { HexproofAbility.getInstance(), Duration.EndOfTurn ); Effect effect2 = new GainAbilityControlledEffect( - HexproofAbility.getInstance(), Duration.EndOfTurn + HexproofAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS ); effect.setText("You"); effect2.setText("and permanents you control gain hexproof until end of turn"); diff --git a/Mage.Sets/src/mage/cards/m/MishraTamerOfMakFawa.java b/Mage.Sets/src/mage/cards/m/MishraTamerOfMakFawa.java index 8a5884dbd94..52719912418 100644 --- a/Mage.Sets/src/mage/cards/m/MishraTamerOfMakFawa.java +++ b/Mage.Sets/src/mage/cards/m/MishraTamerOfMakFawa.java @@ -35,9 +35,8 @@ public final class MishraTamerOfMakFawa extends CardImpl { // Permanents you control have "Ward--Sacrifice a permanent." this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( - new WardAbility(new SacrificeTargetCost( - StaticFilters.FILTER_PERMANENT - ), false), Duration.WhileOnBattlefield + new WardAbility(new SacrificeTargetCost(StaticFilters.FILTER_PERMANENT), false), + Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENTS ).withForceQuotes())); // Each artifact card in your graveyard has unearth {1}{B}{R} diff --git a/Mage.Sets/src/mage/cards/s/SimicCharm.java b/Mage.Sets/src/mage/cards/s/SimicCharm.java index a9eca52671b..1d973643d0b 100644 --- a/Mage.Sets/src/mage/cards/s/SimicCharm.java +++ b/Mage.Sets/src/mage/cards/s/SimicCharm.java @@ -1,40 +1,38 @@ - package mage.cards.s; -import java.util.UUID; import mage.abilities.Mode; import mage.abilities.effects.common.ReturnToHandTargetEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; -import mage.abilities.effects.common.continuous.GainAbilityAllEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; -import mage.filter.common.FilterControlledPermanent; +import mage.filter.StaticFilters; import mage.target.common.TargetCreaturePermanent; +import java.util.UUID; + /** - * * @author Plopman */ public final class SimicCharm extends CardImpl { - public SimicCharm (UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{G}{U}"); + public SimicCharm(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{G}{U}"); //Choose one - Target creature gets +3/+3 until end of turn this.getSpellAbility().addEffect(new BoostTargetEffect(3, 3, Duration.EndOfTurn)); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + //permanents you control gain hexproof until end of turn - Mode mode = new Mode(new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.EndOfTurn)); - this.getSpellAbility().addMode(mode); + this.getSpellAbility().addMode(new Mode(new GainAbilityControlledEffect(HexproofAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS))); + //return target creature to its owner's hand. Mode mode2 = new Mode(new ReturnToHandTargetEffect()); mode2.addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addMode(mode2); - } private SimicCharm(final SimicCharm card) { @@ -42,7 +40,7 @@ public final class SimicCharm extends CardImpl { } @Override - public SimicCharm copy() { + public SimicCharm copy() { return new SimicCharm(this); } } diff --git a/Mage.Sets/src/mage/cards/s/SoulOfNewPhyrexia.java b/Mage.Sets/src/mage/cards/s/SoulOfNewPhyrexia.java index d6a0310f35a..7a33672abf0 100644 --- a/Mage.Sets/src/mage/cards/s/SoulOfNewPhyrexia.java +++ b/Mage.Sets/src/mage/cards/s/SoulOfNewPhyrexia.java @@ -1,7 +1,6 @@ package mage.cards.s; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -13,30 +12,34 @@ import mage.abilities.keyword.TrampleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Duration; +import mage.constants.SubType; import mage.constants.Zone; +import mage.filter.StaticFilters; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class SoulOfNewPhyrexia extends CardImpl { public SoulOfNewPhyrexia(UUID ownerId, CardSetInfo setInfo) { - super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT,CardType.CREATURE},"{6}"); + super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{6}"); this.subtype.add(SubType.PHYREXIAN); this.subtype.add(SubType.AVATAR); this.power = new MageInt(6); this.toughness = new MageInt(6); - + // Trample this.addAbility(TrampleAbility.getInstance()); + // {5}: Permanents you control gain indestructible until end of turn. - this.addAbility(new SimpleActivatedAbility(new GainAbilityControlledEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), new GenericManaCost(5))); + this.addAbility(new SimpleActivatedAbility(new GainAbilityControlledEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS), new GenericManaCost(5))); + // {5}, Exile Soul of New Phyrexia from your graveyard: Permanents you control gain indestructible until end of turn. - Ability ability = new SimpleActivatedAbility(Zone.GRAVEYARD, new GainAbilityControlledEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn), new GenericManaCost(5)); + Ability ability = new SimpleActivatedAbility(Zone.GRAVEYARD, new GainAbilityControlledEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS), new GenericManaCost(5)); ability.addCost(new ExileSourceFromGraveCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/s/SurgeOfSalvation.java b/Mage.Sets/src/mage/cards/s/SurgeOfSalvation.java index ab05786ef90..dd580ee3392 100644 --- a/Mage.Sets/src/mage/cards/s/SurgeOfSalvation.java +++ b/Mage.Sets/src/mage/cards/s/SurgeOfSalvation.java @@ -1,24 +1,23 @@ package mage.cards.s; -import java.util.UUID; - import mage.MageObject; import mage.abilities.Ability; import mage.abilities.effects.PreventionEffectImpl; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.effects.common.continuous.GainAbilityControllerEffect; -import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.keyword.HexproofAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; +import java.util.UUID; + /** - * * @author TheElk801 */ public final class SurgeOfSalvation extends CardImpl { @@ -29,7 +28,11 @@ public final class SurgeOfSalvation extends CardImpl { // You and permanents you control gain hexproof until end of turn. Prevent all damage that black and/or red sources would deal to creatures you control this turn. this.getSpellAbility().addEffect(new GainAbilityControllerEffect( HexproofAbility.getInstance(), Duration.EndOfTurn - ).setText("you"));this.getSpellAbility().addEffect(new GainAbilityControlledEffect(HexproofAbility.getInstance(),Duration.EndOfTurn).concatBy("and"));this.getSpellAbility().addEffect(new SurgeOfSalvationEffect()); + ).setText("you")); + this.getSpellAbility().addEffect(new GainAbilityControlledEffect( + HexproofAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS + ).concatBy("and")); + this.getSpellAbility().addEffect(new SurgeOfSalvationEffect()); } private SurgeOfSalvation(final SurgeOfSalvation card) { @@ -45,7 +48,7 @@ public final class SurgeOfSalvation extends CardImpl { class SurgeOfSalvationEffect extends PreventionEffectImpl { SurgeOfSalvationEffect() { - super(Duration.EndOfTurn,Integer.MAX_VALUE,false); + super(Duration.EndOfTurn, Integer.MAX_VALUE, false); staticText = "Prevent all damage that black and/or red sources would deal to creatures you control this turn"; } @@ -60,16 +63,16 @@ class SurgeOfSalvationEffect extends PreventionEffectImpl { @Override public boolean checksEventType(GameEvent event, Game game) { - return event.getType()== GameEvent.EventType.DAMAGE_PERMANENT; + return event.getType() == GameEvent.EventType.DAMAGE_PERMANENT; } @Override public boolean applies(GameEvent event, Ability source, Game game) { - if(! super.applies(event, source, game)){ + if (!super.applies(event, source, game)) { return false; } - Permanent permanent=game.getPermanent(event.getTargetId()); - MageObject sourceObject=game.getObject(event.getSourceId()); + Permanent permanent = game.getPermanent(event.getTargetId()); + MageObject sourceObject = game.getObject(event.getSourceId()); return permanent != null && sourceObject != null && permanent.isCreature(game) diff --git a/Mage.Sets/src/mage/cards/u/UltimateMagicHoly.java b/Mage.Sets/src/mage/cards/u/UltimateMagicHoly.java index 96801e82cf7..31538212fee 100644 --- a/Mage.Sets/src/mage/cards/u/UltimateMagicHoly.java +++ b/Mage.Sets/src/mage/cards/u/UltimateMagicHoly.java @@ -13,6 +13,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Zone; +import mage.filter.StaticFilters; import mage.game.Game; import mage.game.stack.Spell; @@ -29,7 +30,7 @@ public final class UltimateMagicHoly extends CardImpl { // Permanents you control gain indestructible until end of turn. If this spell was cast from exile, prevent all damage that would be dealt to you this turn. this.getSpellAbility().addEffect(new GainAbilityControlledEffect( - IndestructibleAbility.getInstance(), Duration.EndOfTurn + IndestructibleAbility.getInstance(), Duration.EndOfTurn, StaticFilters.FILTER_PERMANENTS )); this.getSpellAbility().addEffect(new ConditionalOneShotEffect( new AddContinuousEffectToGame(new PreventDamageToControllerEffect(Duration.EndOfTurn)), diff --git a/Mage.Sets/src/mage/cards/v/VeilOfSummer.java b/Mage.Sets/src/mage/cards/v/VeilOfSummer.java index a586809ab14..fa2f3e29a4c 100644 --- a/Mage.Sets/src/mage/cards/v/VeilOfSummer.java +++ b/Mage.Sets/src/mage/cards/v/VeilOfSummer.java @@ -120,10 +120,12 @@ class VeilOfSummerEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { game.addEffect(new GainAbilityControlledEffect( - HexproofFromBlueAbility.getInstance(), Duration.EndOfTurn + HexproofFromBlueAbility.getInstance(), Duration.EndOfTurn, + StaticFilters.FILTER_PERMANENTS ), source); game.addEffect(new GainAbilityControlledEffect( - HexproofFromBlackAbility.getInstance(), Duration.EndOfTurn + HexproofFromBlackAbility.getInstance(), Duration.EndOfTurn, + StaticFilters.FILTER_PERMANENTS ), source); game.addEffect(new GainAbilityControllerEffect( HexproofFromBlueAbility.getInstance(), Duration.EndOfTurn @@ -133,4 +135,4 @@ class VeilOfSummerEffect extends OneShotEffect { ), source); return true; } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/cards/w/WondrousCrucible.java b/Mage.Sets/src/mage/cards/w/WondrousCrucible.java index 5e27f5f7396..51d0a6295d1 100644 --- a/Mage.Sets/src/mage/cards/w/WondrousCrucible.java +++ b/Mage.Sets/src/mage/cards/w/WondrousCrucible.java @@ -2,16 +2,19 @@ package mage.cards.w; import mage.ApprovingObject; import mage.abilities.Ability; -import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; import mage.abilities.keyword.WardAbility; +import mage.abilities.triggers.BeginningOfEndStepTriggeredAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Zone; import mage.filter.StaticFilters; import mage.game.Game; import mage.players.Player; @@ -29,13 +32,12 @@ public final class WondrousCrucible extends CardImpl { // Permanents you control have ward {2}. this.addAbility(new SimpleStaticAbility(new GainAbilityControlledEffect( - new WardAbility(new GenericManaCost(2), false), Duration.WhileOnBattlefield + new WardAbility(new GenericManaCost(2), false), + Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENTS ))); // At the beginning of your end step, mill two cards, then exile a nonland card at random from your graveyard. Copy it. You may cast the copy without paying its mana cost. - this.addAbility(new BeginningOfEndStepTriggeredAbility( - new WondrousCrucibleEffect() - )); + this.addAbility(new BeginningOfEndStepTriggeredAbility(new WondrousCrucibleEffect())); } private WondrousCrucible(final WondrousCrucible card) { diff --git a/Mage.Sets/src/mage/cards/z/ZurgoThundersDecree.java b/Mage.Sets/src/mage/cards/z/ZurgoThundersDecree.java index be9b2e959ff..9cc974582c1 100644 --- a/Mage.Sets/src/mage/cards/z/ZurgoThundersDecree.java +++ b/Mage.Sets/src/mage/cards/z/ZurgoThundersDecree.java @@ -12,6 +12,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.filter.FilterPermanent; +import mage.filter.StaticFilters; import mage.filter.predicate.permanent.TokenPredicate; import java.util.UUID; @@ -43,7 +44,8 @@ public final class ZurgoThundersDecree extends CardImpl { // During your end step, Warrior tokens you control have "This token can't be sacrificed." this.addAbility(new SimpleStaticAbility(new ConditionalContinuousEffect(new GainAbilityControlledEffect( - new SimpleStaticAbility(new CantBeSacrificedSourceEffect()), Duration.WhileOnBattlefield + new SimpleStaticAbility(new CantBeSacrificedSourceEffect()), + Duration.WhileOnBattlefield, StaticFilters.FILTER_PERMANENTS ), condition, "during your end step, Warrior tokens you control have \"This token can't be sacrificed.\""))); } diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityControlledEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityControlledEffect.java index 49fae99cdcd..2f05691c6dd 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityControlledEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/GainAbilityControlledEffect.java @@ -9,7 +9,6 @@ import mage.constants.Layer; import mage.constants.Outcome; import mage.constants.SubLayer; import mage.filter.FilterPermanent; -import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; import mage.util.CardUtil; @@ -27,10 +26,6 @@ public class GainAbilityControlledEffect extends ContinuousEffectImpl { protected boolean forceQuotes = false; protected boolean durationRuleAtStart = false; // put duration rule to the start of the rules instead end - public GainAbilityControlledEffect(Ability ability, Duration duration) { - this(ability, duration, StaticFilters.FILTER_PERMANENTS); - } - public GainAbilityControlledEffect(Ability ability, Duration duration, FilterPermanent filter) { this(ability, duration, filter, false); }