diff --git a/Mage.Sets/src/mage/cards/b/BarbedFoliage.java b/Mage.Sets/src/mage/cards/b/BarbedFoliage.java index 03f5b378003..8be9d1d6656 100644 --- a/Mage.Sets/src/mage/cards/b/BarbedFoliage.java +++ b/Mage.Sets/src/mage/cards/b/BarbedFoliage.java @@ -9,6 +9,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.Duration; import mage.constants.SetTargetPointer; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; @@ -32,7 +33,7 @@ public final class BarbedFoliage extends CardImpl { // Whenever a creature attacks you, it loses flanking until end of turn. this.addAbility(new AttackedByCreatureTriggeredAbility( - new LoseAbilityTargetEffect(new FlankingAbility()) + new LoseAbilityTargetEffect(new FlankingAbility(), Duration.EndOfTurn) .setText("it loses flanking until end of turn"), false, SetTargetPointer.PERMANENT )); diff --git a/Mage.Sets/src/mage/cards/f/FearOfFalling.java b/Mage.Sets/src/mage/cards/f/FearOfFalling.java index 094c9c07923..d44d8c846f1 100644 --- a/Mage.Sets/src/mage/cards/f/FearOfFalling.java +++ b/Mage.Sets/src/mage/cards/f/FearOfFalling.java @@ -9,6 +9,7 @@ import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.Duration; import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.common.FilterCreaturePermanent; @@ -39,9 +40,9 @@ public final class FearOfFalling extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // Whenever Fear of Falling attacks, target creature defending player controls gets -2/-0 and loses flying until your next turn. - Ability ability = new AttacksTriggeredAbility(new BoostTargetEffect(-2, 0) + Ability ability = new AttacksTriggeredAbility(new BoostTargetEffect(-2, 0, Duration.UntilYourNextTurn) .setText("target creature defending player controls gets -2/-0")); - ability.addEffect(new LoseAbilityTargetEffect(FlyingAbility.getInstance()).setText("and loses flying")); + ability.addEffect(new LoseAbilityTargetEffect(FlyingAbility.getInstance(), Duration.UntilYourNextTurn).setText("and loses flying until your next turn")); ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/cards/r/RebelSalvo.java b/Mage.Sets/src/mage/cards/r/RebelSalvo.java index e35891c1812..b06205cdef2 100644 --- a/Mage.Sets/src/mage/cards/r/RebelSalvo.java +++ b/Mage.Sets/src/mage/cards/r/RebelSalvo.java @@ -11,6 +11,7 @@ import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; import mage.filter.common.FilterControlledPermanent; @@ -36,10 +37,10 @@ public final class RebelSalvo extends CardImpl { // Affinity for Equipment this.addAbility(new SimpleStaticAbility(Zone.ALL, new AffinityEffect(filter)).addHint(hint)); - // Rebel Salvo deals 5 damage to target creature or planeswalker. That permanent loses indestructible unil end of turn. + // Rebel Salvo deals 5 damage to target creature or planeswalker. That permanent loses indestructible until end of turn. this.getSpellAbility().addEffect(new DamageTargetEffect(5)); this.getSpellAbility().addTarget(new TargetCreatureOrPlaneswalker()); - this.getSpellAbility().addEffect(new LoseAbilityTargetEffect(IndestructibleAbility.getInstance()) + this.getSpellAbility().addEffect(new LoseAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn) .setText("that permanent loses indestructible until end of turn")); } diff --git a/Mage.Sets/src/mage/cards/s/SmiteTheDeathless.java b/Mage.Sets/src/mage/cards/s/SmiteTheDeathless.java index ef240883cf6..195593f5785 100644 --- a/Mage.Sets/src/mage/cards/s/SmiteTheDeathless.java +++ b/Mage.Sets/src/mage/cards/s/SmiteTheDeathless.java @@ -7,6 +7,7 @@ import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.Duration; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -21,7 +22,7 @@ public final class SmiteTheDeathless extends CardImpl { // Smite the Deathless deals 3 damage to target creature. That creature loses indestructible until end of turn. If that creature would die this turn, exile it instead. this.getSpellAbility().addEffect(new DamageTargetEffect(3)); - this.getSpellAbility().addEffect(new LoseAbilityTargetEffect(IndestructibleAbility.getInstance()) + this.getSpellAbility().addEffect(new LoseAbilityTargetEffect(IndestructibleAbility.getInstance(), Duration.EndOfTurn) .setText("that creature loses indestructible until end of turn")); this.getSpellAbility().addEffect(new ExileTargetIfDiesEffect()); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/LoseAbilityTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/LoseAbilityTargetEffect.java index 0b929f78f4a..c1cdd545214 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/LoseAbilityTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/LoseAbilityTargetEffect.java @@ -1,4 +1,3 @@ - package mage.abilities.effects.common.continuous; import mage.abilities.Ability; @@ -12,16 +11,14 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.util.CardUtil; +import java.util.UUID; + /** * @author jeffwadsworth */ public class LoseAbilityTargetEffect extends ContinuousEffectImpl { - protected Ability ability; - - public LoseAbilityTargetEffect(Ability ability) { - this(ability, Duration.WhileOnBattlefield); - } + private final Ability ability; public LoseAbilityTargetEffect(Ability ability, Duration duration) { super(duration, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.LoseAbility); @@ -40,11 +37,15 @@ public class LoseAbilityTargetEffect extends ContinuousEffectImpl { @Override public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source)); - if (permanent != null) { - permanent.removeAbility(ability, source.getSourceId(), game); + boolean result = false; + for (UUID uuid : getTargetPointer().getTargets(game, source)) { + Permanent permanent = game.getPermanent(uuid); + if (permanent != null) { + permanent.removeAbility(ability, source.getSourceId(), game); + result = true; + } } - return true; + return result; } @Override