* Fixed some bugs of "Don't untap during controller's next untap" effects, that also prevented untap in untap steps of other players (e.g. by Ivorytusk Fortess).

This commit is contained in:
LevelX2 2014-12-10 15:02:45 +01:00
parent b3f1cc002e
commit d0b304856b
98 changed files with 289 additions and 261 deletions

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.abilities.common.BlocksCreatureAttachedTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.continious.BoostEquippedEffect;
import mage.abilities.effects.common.continious.GainAbilityAttachedEffect;
import mage.abilities.keyword.EquipAbility;
@ -63,7 +63,7 @@ public class ShieldOfTheRighteous extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(VigilanceAbility.getInstance(), AttachmentType.EQUIPMENT)));
// Whenever equipped creature blocks a creature, that creature doesn't untap during its controller's next untap step.
this.addAbility(new BlocksCreatureAttachedTriggeredAbility(new SkipNextUntapTargetEffect("that creature"), "equipped", false, false, true));
this.addAbility(new BlocksCreatureAttachedTriggeredAbility(new DontUntapInControllersNextUntapStepTargetEffect("that creature"), "equipped", false, false, true));
// Equip {2}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2), new TargetControlledCreaturePermanent()));

View file

@ -30,7 +30,7 @@ package mage.sets.avacynrestored;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
import mage.target.common.TargetCreaturePermanent;
@ -52,7 +52,7 @@ public class CripplingChill extends CardImpl {
// Tap target creature. It doesn't untap during its controller's next untap step.
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addEffect(new TapTargetEffect());
this.getSpellAbility().addEffect(new SkipNextUntapTargetEffect());
this.getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
// Draw a card.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
}

View file

@ -34,7 +34,7 @@ import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.DestroySourceEffect;
import mage.abilities.effects.common.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.constants.Outcome;
@ -66,11 +66,10 @@ public class SpectralPrison extends CardImpl {
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
// Enchanted creature doesn't untap during its controller's untap step.
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
// When enchanted creature becomes the target of a spell, sacrifice Spectral Prison.
this.addAbility(new SpectralPrisonAbility());

View file

@ -38,7 +38,7 @@ import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.GetEmblemEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.abilities.effects.common.continious.MaximumHandSizeControllerEffect;
import mage.abilities.effects.common.continious.MaximumHandSizeControllerEffect.HandSizeModification;
@ -77,7 +77,7 @@ public class TamiyoTheMoonSage extends CardImpl {
// +1: Tap target permanent. It doesn't untap during its controller's next untap step.
LoyaltyAbility ability = new LoyaltyAbility(new TapTargetEffect(), 1);
ability.addEffect(new SkipNextUntapTargetEffect());
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
Target target = new TargetPermanent();
ability.addTarget(target);
this.addAbility(ability);

View file

@ -38,7 +38,7 @@ import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.SkipUntapAllEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
import mage.cards.CardImpl;
import mage.constants.Duration;
import mage.constants.TargetController;
@ -65,7 +65,7 @@ public class HokoriDustDrinker extends CardImpl {
this.toughness = new MageInt(1);
// Lands don't untap during their controllers' untap steps.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, new FilterLandPermanent("Lands"))));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, new FilterLandPermanent("Lands"))));
// At the beginning of each player's upkeep, that player untaps a land he or she controls.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new HokoriDustDrinkerUntapEffect(), TargetController.ANY, false));

View file

@ -34,7 +34,7 @@ import mage.abilities.common.DealsDamageToACreatureTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
@ -75,7 +75,7 @@ public class MatsuTribeSniper extends CardImpl {
// Whenever Matsu-Tribe Sniper deals damage to a creature, tap that creature and it doesn't untap during its controller's next untap step.
ability = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), false, false, true);
ability.addEffect(new SkipNextUntapTargetEffect("and it"));
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("and it"));
this.addAbility(ability);
}

View file

@ -36,7 +36,7 @@ import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.decorator.ConditionalContinuousRuleModifyingEffect;
import mage.abilities.effects.ContinuousRuleModifiyingEffect;
import mage.abilities.effects.common.LoseLifeTargetEffect;
import mage.abilities.effects.common.SkipUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.abilities.keyword.EquipAbility;
import mage.cards.CardImpl;
@ -57,12 +57,13 @@ public class NekoTe extends CardImpl {
this.subtype.add("Equipment");
// Whenever equipped creature deals damage to a creature, tap that creature. That creature doesn't untap during its controller's untap step for as long as Neko-Te remains on the battlefield.
ContinuousRuleModifiyingEffect skipUntapEffect = new SkipUntapTargetEffect(Duration.WhileOnBattlefield);
ContinuousRuleModifiyingEffect skipUntapEffect = new DontUntapInControllersUntapStepTargetEffect(Duration.WhileOnBattlefield);
skipUntapEffect.setText("That creature doesn't untap during its controller's untap step for as long as {this} remains on the battlefield");
ConditionalContinuousRuleModifyingEffect effect = new ConditionalContinuousRuleModifyingEffect(skipUntapEffect, new SourceOnBattelfieldCondition());
Ability ability = new DealsDamageToACreatureAttachedTriggeredAbility(new TapTargetEffect("that creature"), false, "equipped creature", false, true);
ability.addEffect(effect);
this.addAbility(ability);
// Whenever equipped creature deals damage to a player, that player loses 1 life.
this.addAbility(new DealsDamageToAPlayerAttachedTriggeredAbility(new LoseLifeTargetEffect(1), "equipped creature", false, true, false));

View file

@ -29,7 +29,7 @@ package mage.sets.bornofthegods;
import java.util.UUID;
import mage.abilities.effects.keyword.ScryEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
@ -51,7 +51,7 @@ public class SuddenStorm extends CardImpl {
// Tap up to two target creatures. Those creatures don't untap during their controllers' next untap steps. Scry 1.
this.getSpellAbility().addEffect(new TapTargetEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2));
this.getSpellAbility().addEffect(new SkipNextUntapTargetEffect());
this.getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
this.getSpellAbility().addEffect(new ScryEffect(1));
}

View file

@ -32,7 +32,7 @@ import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.effects.common.SkipNextUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
import mage.abilities.mana.BlueManaAbility;
import mage.abilities.mana.ColorlessManaAbility;
import mage.abilities.mana.WhiteManaAbility;
@ -51,10 +51,10 @@ public class CloudcrestLake extends CardImpl {
// {T}: Add {W} or {U} to your mana pool. Cloudcrest Lake doesn't untap during your next untap step.
this.addAbility(new ColorlessManaAbility());
Ability whiteManaAbility = new WhiteManaAbility();
whiteManaAbility.addEffect(new SkipNextUntapSourceEffect());
whiteManaAbility.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(whiteManaAbility);
Ability blueManaAbility = new BlueManaAbility();
blueManaAbility.addEffect(new SkipNextUntapSourceEffect());
blueManaAbility.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(blueManaAbility);
}

View file

@ -37,7 +37,7 @@ import mage.abilities.common.DealsDamageToACreatureTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.RegenerateSourceEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
@ -60,7 +60,7 @@ public class KashiTribeReaver extends CardImpl {
// Whenever Kashi-Tribe Reaver deals combat damage to a creature, tap that creature and it doesn't untap during its controller's next untap step.
Ability ability;
ability = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), true, false, true);
ability.addEffect(new SkipNextUntapTargetEffect("and it"));
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("and it"));
this.addAbility(ability);
// {1}{G}: Regenerate Kashi-Tribe Reaver.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{1}{G}")));

View file

@ -34,7 +34,7 @@ import mage.constants.Rarity;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToACreatureTriggeredAbility;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
@ -57,7 +57,7 @@ public class KashiTribeWarriors extends CardImpl {
// Whenever Kashi-Tribe Reaver deals combat damage to a creature, tap that creature and it doesn't untap during its controller's next untap step.
Ability ability;
ability = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), true, false, true);
ability.addEffect(new SkipNextUntapTargetEffect("and it"));
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("and it"));
this.addAbility(ability);
}

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.effects.common.SkipNextUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
import mage.abilities.mana.BlackManaAbility;
import mage.abilities.mana.ColorlessManaAbility;
import mage.abilities.mana.RedManaAbility;
@ -48,10 +48,10 @@ public class LanternLitGraveyard extends CardImpl {
this.expansionSetCode = "CHK";
this.addAbility(new ColorlessManaAbility());
Ability blackManaAbility = new BlackManaAbility();
blackManaAbility.addEffect(new SkipNextUntapSourceEffect());
blackManaAbility.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(blackManaAbility);
Ability redManaAbility = new RedManaAbility();
redManaAbility.addEffect(new SkipNextUntapSourceEffect());
redManaAbility.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(redManaAbility);
}

View file

@ -37,7 +37,7 @@ import mage.abilities.common.DealsDamageToACreatureTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.combat.MustBeBlockedByTargetSourceEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
import mage.target.common.TargetCreaturePermanent;
@ -65,7 +65,7 @@ public class MatsuTribeDecoy extends CardImpl {
// Whenever Kashi-Tribe Reaver deals combat damage to a creature, tap that creature and it doesn't untap during its controller's next untap step.
Ability ability2;
ability2 = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), true, false, true);
ability2.addEffect(new SkipNextUntapTargetEffect("and it"));
ability2.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("and it"));
this.addAbility(ability2);
}

View file

@ -37,7 +37,7 @@ import mage.constants.Zone;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.FlashAbility;
import mage.cards.CardImpl;
@ -66,7 +66,7 @@ public class MysticRestraints extends CardImpl {
// When Mystic Restraints enters the battlefield, tap enchanted creature.
this.addAbility(new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect()));
// Enchanted creature doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
}
public MysticRestraints(final MysticRestraints card) {

View file

@ -34,7 +34,7 @@ import mage.constants.Rarity;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToACreatureTriggeredAbility;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
@ -57,7 +57,7 @@ public class OrochiRanger extends CardImpl {
// Whenever Orochi Ranger deals combat damage to a creature, tap that creature and it doesn't untap during its controller's next untap step.
Ability ability;
ability = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), true, false, true);
ability.addEffect(new SkipNextUntapTargetEffect("and it"));
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("and it"));
this.addAbility(ability);
}

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.effects.common.SkipNextUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
import mage.abilities.mana.ColorlessManaAbility;
import mage.abilities.mana.GreenManaAbility;
import mage.abilities.mana.RedManaAbility;
@ -48,10 +48,10 @@ public class PinecrestRidge extends CardImpl {
this.expansionSetCode = "CHK";
this.addAbility(new ColorlessManaAbility());
Ability redManaAbility = new RedManaAbility();
redManaAbility.addEffect(new SkipNextUntapSourceEffect());
redManaAbility.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(redManaAbility);
Ability greenManaAbility = new GreenManaAbility();
greenManaAbility.addEffect(new SkipNextUntapSourceEffect());
greenManaAbility.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(greenManaAbility);
}

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.effects.common.SkipNextUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
import mage.abilities.mana.ColorlessManaAbility;
import mage.abilities.mana.GreenManaAbility;
import mage.abilities.mana.WhiteManaAbility;
@ -48,10 +48,10 @@ public class TranquilGarden extends CardImpl {
this.expansionSetCode = "CHK";
this.addAbility(new ColorlessManaAbility());
Ability greenManaAbility = new GreenManaAbility();
greenManaAbility.addEffect(new SkipNextUntapSourceEffect());
greenManaAbility.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(greenManaAbility);
Ability whiteManaAbility = new WhiteManaAbility();
whiteManaAbility.addEffect(new SkipNextUntapSourceEffect());
whiteManaAbility.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(whiteManaAbility);
}

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.effects.common.SkipNextUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
import mage.abilities.mana.BlackManaAbility;
import mage.abilities.mana.BlueManaAbility;
import mage.abilities.mana.ColorlessManaAbility;
@ -46,12 +46,16 @@ public class WaterveilCavern extends CardImpl {
public WaterveilCavern(UUID ownerId) {
super(ownerId, 286, "Waterveil Cavern", Rarity.UNCOMMON, new CardType[]{CardType.LAND}, "");
this.expansionSetCode = "CHK";
// Tap: Add 1 to your mana pool.
this.addAbility(new ColorlessManaAbility());
// Tap: Add Blue or Black to your mana pool. Waterveil Cavern doesn't untap during your next untap step.
Ability blueManaAbility = new BlueManaAbility();
blueManaAbility.addEffect(new SkipNextUntapSourceEffect());
blueManaAbility.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(blueManaAbility);
Ability blackManaAbility = new BlackManaAbility();
blackManaAbility.addEffect(new SkipNextUntapSourceEffect());
blackManaAbility.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(blackManaAbility);
}

View file

@ -33,7 +33,7 @@ import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DoIfClashWonEffect;
import mage.abilities.effects.common.PreventAllDamageByAllEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Duration;
@ -89,7 +89,7 @@ class PollenLullabyEffect extends OneShotEffect {
if (player != null) {
for (Permanent creature: game.getBattlefield().getAllActivePermanents(new FilterCreaturePermanent(), player.getId(), game)) {
creature.tap(game);
ContinuousEffect effect = new SkipNextUntapTargetEffect("This creature");
ContinuousEffect effect = new DontUntapInControllersNextUntapStepTargetEffect("This creature");
effect.setTargetPointer(new FixedTarget(creature.getId()));
game.addEffect(effect, source);
}

View file

@ -36,7 +36,7 @@ import mage.abilities.condition.common.CastFromHandCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
@ -108,7 +108,7 @@ class BreachingLeviathanEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
for (Permanent creature: game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) {
creature.tap(game);
ContinuousEffect effect = new SkipNextUntapTargetEffect();
ContinuousEffect effect = new DontUntapInControllersNextUntapStepTargetEffect();
effect.setTargetPointer(new FixedTarget(creature.getId()));
game.addEffect(effect, source);
}

View file

@ -35,7 +35,7 @@ import mage.constants.Zone;
import mage.ObjectColor;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
@ -71,7 +71,7 @@ public class ControlledInstincts extends CardImpl {
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
// Enchanted creature doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
}
public ControlledInstincts(final ControlledInstincts card) {

View file

@ -46,7 +46,7 @@ import mage.game.permanent.Permanent;
import java.util.UUID;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.target.targetpointer.FixedTarget;
/**
@ -97,7 +97,7 @@ class ClingingMistsEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
for (Permanent creature: game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) {
creature.tap(game);
ContinuousEffect effect = new SkipNextUntapTargetEffect();
ContinuousEffect effect = new DontUntapInControllersNextUntapStepTargetEffect();
effect.setTargetPointer(new FixedTarget(creature.getId()));
game.addEffect(effect, source);
}

View file

@ -37,7 +37,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.constants.Outcome;
@ -76,8 +76,8 @@ public class RunnersBane extends CardImpl {
// When Runner's Bane enters the battlefield, tap enchanted creature.
this.addAbility(new EntersBattlefieldTriggeredAbility(new RunnersBaneEffect()));
// Enchanted creature doesn't untap during the untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
// Enchanted creature doesn't untap during its controller's the untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
}
public RunnersBane(final RunnersBane card) {

View file

@ -34,7 +34,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapTargetCost;
import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect;
import mage.abilities.keyword.TrampleAbility;
@ -78,7 +78,7 @@ public class AltarGolem extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SetPowerToughnessSourceEffect(amount, Duration.WhileOnBattlefield)));
// Altar Golem doesn't untap during your untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// Tap five untapped creatures you control: Untap Altar Golem.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), new TapTargetCost(new TargetControlledCreaturePermanent(5, 5, filter, true))));

View file

@ -35,7 +35,7 @@ import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.cards.CardImpl;
import mage.filter.FilterSpell;
@ -64,7 +64,7 @@ public class NettleSentinel extends CardImpl {
this.toughness = new MageInt(2);
// Nettle Sentinel doesn't untap during your untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// Whenever you cast a green spell, you may untap Nettle Sentinel.
this.addAbility(new SpellCastControllerTriggeredAbility(new UntapSourceEffect(), filter, true));
}

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
@ -54,7 +54,7 @@ public class BatteredGolem extends CardImpl {
this.toughness = new MageInt(2);
// Battered Golem doesn't untap during your untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// Whenever an artifact enters the battlefield, you may untap Battered Golem.
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), new FilterArtifactPermanent("an artifact"), true));
}

View file

@ -37,7 +37,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.condition.common.IsStepCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalActivatedAbility;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
@ -61,7 +61,7 @@ public class ColossusOfSardia extends CardImpl {
this.addAbility(TrampleAbility.getInstance());
// Colossus of Sardia doesn't untap during your untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// {9}: Untap Colossus of Sardia. Activate this ability only during your upkeep.
this.addAbility(new ConditionalActivatedAbility(Zone.BATTLEFIELD,

View file

@ -33,7 +33,7 @@ import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
@ -56,7 +56,7 @@ public class BrassMan extends CardImpl {
this.toughness = new MageInt(3);
// Brass Man doesn't untap during your untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// At the beginning of your upkeep, you may pay {1}. If you do, untap Brass Man.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(
Zone.BATTLEFIELD,

View file

@ -32,7 +32,7 @@ import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.abilities.effects.common.CipherEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
import mage.constants.TargetController;
@ -59,7 +59,7 @@ public class HandsOfBinding extends CardImpl {
//Tap target creature an opponent controls. That creature doesn't untap during its controller's next untap step.
this.getSpellAbility().addEffect(new TapTargetEffect());
this.getSpellAbility().addEffect(new SkipNextUntapTargetEffect());
this.getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
//Cipher
this.getSpellAbility().addEffect(new CipherEffect());

View file

@ -41,7 +41,7 @@ import mage.abilities.effects.ContinuousEffectImpl;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.UntapEnchantedEffect;
import mage.abilities.effects.common.continious.BoostEnchantedEffect;
import mage.abilities.effects.common.continious.SourceEffect;
@ -96,7 +96,7 @@ public class DanceOfTheDead extends CardImpl {
// Enchanted creature gets +1/+1 and doesn't untap during its controller's untap step.
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 1, Duration.WhileOnBattlefield));
Effect effect = new SkipUntapSourceEffect();
Effect effect = new DontUntapInControllersUntapStepSourceEffect();
effect.setText("and doesn't untap during its controller's untap step");
ability.addEffect(effect);
this.addAbility(ability);

View file

@ -34,7 +34,7 @@ import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.SkipUntapAllEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Duration;
@ -69,7 +69,7 @@ public class WrathOfMaritLage extends CardImpl {
// When Wrath of Marit Lage enters the battlefield, tap all red creatures.
this.addAbility(new EntersBattlefieldTriggeredAbility(new TapAllEffect()));
// Red creatures don't untap during their controllers' untap steps.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, filter)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, filter)));
}
public WrathOfMaritLage(final WrathOfMaritLage card) {

View file

@ -36,7 +36,7 @@ import mage.constants.Zone;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.effects.common.TapEnchantedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
@ -63,7 +63,7 @@ public class Claustrophobia extends CardImpl {
// When Claustrophobia enters the battlefield, tap enchanted creature.
this.addAbility(new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect()));
// Enchanted creature doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
}
public Claustrophobia(final Claustrophobia card) {

View file

@ -35,7 +35,7 @@ import mage.MageInt;
import mage.abilities.common.AttacksEachTurnStaticAbility;
import mage.abilities.common.DiesCreatureTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.cards.CardImpl;
@ -56,7 +56,7 @@ public class GalvanicJuggernaut extends CardImpl {
// Galvanic Juggernaut attacks each turn if able.
this.addAbility(new AttacksEachTurnStaticAbility());
// Galvanic Juggernaut doesn't untap during your untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// Whenever another creature dies, untap Galvanic Juggernaut.
this.addAbility(new DiesCreatureTriggeredAbility(new UntapSourceEffect(), false, true));
}

View file

@ -29,13 +29,13 @@ package mage.sets.innistrad;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.SacrificeTargetCost;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl;
@ -76,10 +76,13 @@ public class GrimgrinCorpseBorn extends CardImpl {
this.toughness = new MageInt(5);
// Grimgrin, Corpse-Born enters the battlefield tapped and doesn't untap during your untap step.
this.addAbility(new EntersBattlefieldTappedAbility());
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()));
Ability ability = new EntersBattlefieldTappedAbility(
"{this} enters the battlefield tapped and doesn't untap during your untap step.");
ability.addEffect(new DontUntapInControllersUntapStepSourceEffect());
this.addAbility(ability);
// Sacrifice another creature: Untap Grimgrin and put a +1/+1 counter on it.
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapSourceEffect(),
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapSourceEffect(),
new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, false)));
ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
this.addAbility(ability);

View file

@ -37,7 +37,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.ReturnToHandSourceEffect;
import mage.abilities.effects.common.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.constants.Outcome;
@ -63,11 +63,10 @@ public class Shackles extends CardImpl {
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
// Enchanted creature doesn't untap during its controller's untap step.
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
// {W}: Return Shackles to its owner's hand.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandSourceEffect(true), new ManaCostsImpl("{W}")));

View file

@ -32,7 +32,7 @@ import mage.abilities.Ability;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.PreventAllDamageByAllEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Duration;
@ -101,7 +101,7 @@ class TangleEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
for (Permanent permanent :game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) {
ContinuousEffect effect = new SkipNextUntapTargetEffect();
ContinuousEffect effect = new DontUntapInControllersNextUntapStepTargetEffect();
effect.setTargetPointer(new FixedTarget(permanent.getId()));
game.addEffect(effect, source);
}

View file

@ -32,7 +32,7 @@ import mage.abilities.Ability;
import mage.abilities.SpellAbility;
import mage.abilities.condition.common.FerociousCondition;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
@ -83,7 +83,7 @@ public class IcyBlast extends CardImpl {
}
}
class IcyBlastSkipNextUntapTargetEffect extends SkipNextUntapTargetEffect {
class IcyBlastSkipNextUntapTargetEffect extends DontUntapInControllersNextUntapStepTargetEffect {
public IcyBlastSkipNextUntapTargetEffect() {
super();

View file

@ -33,7 +33,7 @@ import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
@ -68,7 +68,7 @@ public class QuietContemplation extends CardImpl {
// Whenever you cast a noncreature spell, you may pay {1}. If you do, tap target creature an opponent controls and it doesn't untap during its controller's next untap step.
DoIfCostPaid doIfCostPaid = new DoIfCostPaid(new TapTargetEffect(), new GenericManaCost(1),"Tap creature?");
Effect effect = new SkipNextUntapTargetEffect();
Effect effect = new DontUntapInControllersNextUntapStepTargetEffect();
effect.setText("and it doesn't untap during its controller's next untap step");
doIfCostPaid.addEffect(effect);
Ability ability = new SpellCastControllerTriggeredAbility(doIfCostPaid, filterNonCreature, false);

View file

@ -35,7 +35,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.effects.common.TapEnchantedEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.effects.common.continious.GainAbilityAttachedEffect;
@ -73,7 +73,7 @@ public class SingingBellStrike extends CardImpl {
// When Singing Bell Strike enters the battlefield, tap enchanted creature.
this.addAbility(new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect()));
// Enchanted creature doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
// Enchanted creature has "{6}: Untap this creature."
Ability gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), new GenericManaCost(6));
Effect effect = new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA, Duration.WhileOnBattlefield);

View file

@ -33,7 +33,7 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.mana.SimpleManaAbility;
import mage.cards.CardImpl;
@ -52,7 +52,7 @@ public class BasaltMonolith extends CardImpl {
this.expansionSetCode = "LEA";
// Basalt Monolith doesn't untap during your untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// {tap}: Add {3} to your mana pool.
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, new Mana(0,0,0,0,0,3,0),new TapSourceCost()));
// {3}: Untap Basalt Monolith.

View file

@ -38,7 +38,7 @@ import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.decorator.ConditionalTriggeredAbility;
import mage.abilities.effects.common.DamageControllerEffect;
import mage.abilities.effects.common.DoIfCostPaid;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.mana.SimpleManaAbility;
import mage.cards.CardImpl;
@ -58,7 +58,7 @@ public class ManaVault extends CardImpl {
this.expansionSetCode = "LEA";
// Mana Vault doesn't untap during your untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// At the beginning of your upkeep, you may pay {4}. If you do, untap Mana Vault.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(
Zone.BATTLEFIELD,

View file

@ -29,7 +29,7 @@ package mage.sets.limitedalpha;
import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.SkipUntapAllEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Duration;
@ -57,7 +57,7 @@ public class Meekstone extends CardImpl {
this.expansionSetCode = "LEA";
// Creatures with power 3 or greater don't untap during their controllers' untap steps.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, filter)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, filter)));
}
public Meekstone(final Meekstone card) {

View file

@ -67,7 +67,7 @@ public class Paralyze extends CardImpl {
// When Paralyze enters the battlefield, tap enchanted creature.
this.addAbility(new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect()));
// Enchanted creature doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
// At the beginning of the upkeep of enchanted creature's controller, that player may pay {4}. If he or she does, untap the creature.
this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new ParalyzeEffect(), TargetController.CONTROLLER_ATTACHED_TO, false));
}

View file

@ -30,7 +30,7 @@ package mage.sets.lorwyn;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
@ -99,7 +99,7 @@ class EntanglingClashTriggeredAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (EventType.CLASHED.equals(event.getType()) && event.getPlayerId().equals(getControllerId())) {
if (event.getFlag()) { // clash won
addEffect(new SkipNextUntapTargetEffect("that creature"));
addEffect(new DontUntapInControllersNextUntapStepTargetEffect("that creature"));
}
return true;
}

View file

@ -34,7 +34,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.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
@ -67,7 +67,7 @@ public class GlimmerdustNap extends CardImpl {
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
// Enchanted creature doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
}
public GlimmerdustNap(final GlimmerdustNap card) {

View file

@ -34,7 +34,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.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
@ -66,8 +66,9 @@ public class EntanglingVines extends CardImpl {
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
// Enchanted creature doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
}
public EntanglingVines(final EntanglingVines card) {

View file

@ -35,7 +35,7 @@ import mage.constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.Game;
@ -85,7 +85,7 @@ class SleepEffect extends OneShotEffect {
if (player != null) {
for (Permanent creature: game.getBattlefield().getAllActivePermanents(new FilterCreaturePermanent(), player.getId(), game)) {
creature.tap(game);
ContinuousEffect effect = new SkipNextUntapTargetEffect();
ContinuousEffect effect = new DontUntapInControllersNextUntapStepTargetEffect();
effect.setTargetPointer(new FixedTarget(creature.getId()));
game.addEffect(effect, source);
}

View file

@ -32,7 +32,7 @@ import mage.constants.CardType;
import mage.constants.Rarity;
import mage.MageInt;
import mage.abilities.common.BlocksCreatureTriggeredAbility;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.keyword.DefenderAbility;
import mage.cards.CardImpl;
@ -51,7 +51,7 @@ public class WallOfFrost extends CardImpl {
this.addAbility(DefenderAbility.getInstance());
// Whenever Wall of Frost blocks a creature, that creature doesn't untap during its controller's next untap step.
this.addAbility(new BlocksCreatureTriggeredAbility(new SkipNextUntapTargetEffect("that creature"), false, true));
this.addAbility(new BlocksCreatureTriggeredAbility(new DontUntapInControllersNextUntapStepTargetEffect("that creature"), false, true));
}
public WallOfFrost(final WallOfFrost card) {

View file

@ -36,7 +36,7 @@ import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.CounterUnlessPaysEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
import mage.game.Game;
@ -115,7 +115,7 @@ class FrostTitanAbility2 extends TriggeredAbilityImpl {
public FrostTitanAbility2() {
super(Zone.BATTLEFIELD, new TapTargetEffect(), false);
this.addEffect(new SkipNextUntapTargetEffect());
this.addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
this.addTarget(new TargetPermanent());
}

View file

@ -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.common.DamageTargetEffect;
import mage.abilities.effects.common.SkipNextUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
import mage.cards.CardImpl;
import mage.constants.Zone;
import mage.target.common.TargetAttackingOrBlockingCreature;
@ -62,7 +62,7 @@ public class ArbalestElite extends CardImpl {
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), new ManaCostsImpl("{2}{W}"));
ability.addCost(new TapSourceCost());
ability.addTarget(new TargetAttackingOrBlockingCreature());
ability.addEffect(new SkipNextUntapSourceEffect());
ability.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(ability);
}

View file

@ -30,7 +30,7 @@ package mage.sets.magic2012;
import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
import mage.target.common.TargetCreaturePermanent;
@ -50,7 +50,7 @@ public class FrostBreath extends CardImpl {
// Tap up to two target creatures. Those creatures don't untap during their controller's next untap step.
this.getSpellAbility().addEffect(new TapTargetEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2));
this.getSpellAbility().addEffect(new SkipNextUntapTargetEffect());
this.getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
}
public FrostBreath(final FrostBreath card) {

View file

@ -33,7 +33,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.CantActivateAbilitiesAttachedEffect;
import mage.abilities.effects.common.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.constants.CardType;
@ -74,7 +74,7 @@ public class Encrust extends CardImpl {
this.addAbility(ability);
// Enchanted permanent doesn't untap during its controller's untap step and its activated abilities can't be activated.
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect());
ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect());
Effect effect = new CantActivateAbilitiesAttachedEffect();
effect.setText("and its activated abilities can't be activated");
ability.addEffect(effect);

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
@ -65,7 +65,7 @@ public class FrostLynx extends CardImpl {
// When Frost Lynx enters the battlefield, tap target creature an opponent controls. It doesn't untap during its controller's next untap step.
Ability ability = new EntersBattlefieldTriggeredAbility(new TapTargetEffect(), false);
ability.addEffect(new SkipNextUntapTargetEffect("It"));
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("It"));
ability.addTarget(new TargetCreaturePermanent(filter));
this.addAbility(ability);
}

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.AttacksTriggeredAbility;
import mage.abilities.effects.common.SkipNextUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
@ -51,7 +51,7 @@ public class LeadGolem extends CardImpl {
this.toughness = new MageInt(5);
// Whenever Lead Golem attacks, it doesn't untap during its controller's next untap step.
Ability ability = new AttacksTriggeredAbility(new SkipNextUntapSourceEffect(), false);
Ability ability = new AttacksTriggeredAbility(new DontUntapInControllersNextUntapStepSourceEffect(), false);
this.addAbility(ability);
}

View file

@ -33,12 +33,14 @@ import mage.constants.Outcome;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.LoseLifeTargetEffect;
import mage.abilities.effects.common.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterArtifactOrEnchantmentPermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.game.Game;
@ -68,12 +70,15 @@ public class NumbingDose extends CardImpl {
this.color.setBlue(true);
// Enchant artifact or creature
TargetPermanent auraTarget = new TargetPermanent(filter);
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
EnchantAbility ability = new EnchantAbility(auraTarget.getTargetName());
ability.addEffect(new SkipEnchantedUntapEffect());
this.addAbility(ability);
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
// Enchanted permanent doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
// At the beginning of the upkeep of enchanted permanent's controller, that player loses 1 life.
this.addAbility(new NumbingDoseTriggeredAbility());
}

View file

@ -32,7 +32,7 @@ import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.TapForManaAllTriggeredManaAbility;
import mage.abilities.effects.common.AddManaOfAnyColorTargetCanProduceEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl;
import mage.constants.CardType;
@ -87,7 +87,7 @@ class VorinclexTriggeredAbility2 extends TriggeredAbilityImpl {
private static final String staticText = "Whenever an opponent taps a land for mana, that land doesn't untap during its controller's next untap step.";
public VorinclexTriggeredAbility2() {
super(Zone.BATTLEFIELD, new SkipNextUntapTargetEffect());
super(Zone.BATTLEFIELD, new DontUntapInControllersNextUntapStepTargetEffect());
}
public VorinclexTriggeredAbility2(VorinclexTriggeredAbility2 ability) {

View file

@ -34,7 +34,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.DiscardTargetCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.effects.common.continious.GainAbilityAttachedEffect;
import mage.abilities.keyword.EnchantAbility;
@ -72,7 +72,7 @@ public class ImmobilizingInk extends CardImpl {
// Enchanted creature doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new GainAbilityAttachedEffect(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()),
new GainAbilityAttachedEffect(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()),
AttachmentType.AURA,
Duration.WhileOnBattlefield,"Enchanted creature doesn't untap during its controller's untap step.")));

View file

@ -38,7 +38,7 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.cards.CardImpl;
import mage.target.common.TargetCreatureOrPlayer;
@ -59,7 +59,7 @@ public class GoblinSharpshooter extends CardImpl {
this.toughness = new MageInt(1);
// Goblin Sharpshooter doesn't untap during your untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// Whenever a creature dies, untap Goblin Sharpshooter.
this.addAbility(new DiesCreatureTriggeredAbility(new UntapSourceEffect(), false));
// {tap}: Goblin Sharpshooter deals 1 damage to target creature or player.

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
@ -99,7 +99,7 @@ class ExhaustionEffect extends OneShotEffect {
Player player = game.getPlayer(source.getFirstTarget());
if (player != null) {
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, player.getId(), game)) {
ContinuousEffect effect = new SkipNextUntapTargetEffect();
ContinuousEffect effect = new DontUntapInControllersNextUntapStepTargetEffect();
effect.setTargetPointer(new FixedTarget(permanent.getId()));
game.addEffect(effect, source);
}

View file

@ -36,7 +36,7 @@ import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.common.BecomesTargetControllerSpellTriggeredAbility;
@ -61,7 +61,7 @@ public class DormantGomazoa extends CardImpl {
this.addAbility(new EntersBattlefieldTappedAbility());
// Dormant Gomazoa doesn't untap during your untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// Whenever you become the target of a spell, you may untap Dormant Gomazoa.
this.addAbility(new BecomesTargetControllerSpellTriggeredAbility(new UntapSourceEffect(), true));

View file

@ -35,7 +35,7 @@ import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToACreatureTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.abilities.effects.common.continious.GainAbilityControlledEffect;
import mage.abilities.keyword.ShroudAbility;
@ -75,7 +75,7 @@ public class KashiTribeElite extends CardImpl {
// Whenever Kashi-Tribe Elite deals combat damage to a creature, tap that creature and it doesn't untap during its controller's next untap step.
Ability ability;
ability = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), true, false, true);
ability.addEffect(new SkipNextUntapTargetEffect("and it"));
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("and it"));
this.addAbility(ability);
}

View file

@ -36,7 +36,7 @@ import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToACreatureTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.abilities.effects.common.continious.GainAbilitySourceEffect;
import mage.abilities.keyword.ReachAbility;
@ -63,7 +63,7 @@ public class MatsuTribeBirdstalker extends CardImpl {
// Whenever Kashi-Tribe Elite deals combat damage to a creature, tap that creature and it doesn't untap during its controller's next untap step.
Ability ability;
ability = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), true, false, true);
ability.addEffect(new SkipNextUntapTargetEffect("and it"));
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("and it"));
this.addAbility(ability);
// {G}: Matsu-Tribe Birdstalker gains reach until end of turn. (It can block creatures with flying.)

View file

@ -33,12 +33,14 @@ import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.FlashAbility;
import mage.cards.CardImpl;
import mage.constants.Outcome;
import mage.constants.Zone;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
@ -54,13 +56,19 @@ public class BondsOfQuicksilver extends CardImpl {
this.subtype.add("Aura");
this.color.setBlue(true);
// Flash (You may cast this spell any time you could cast an instant.)
this.addAbility(FlashAbility.getInstance());
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
Ability ability = new EnchantAbility(auraTarget.getTargetName());
ability.addEffect(new SkipEnchantedUntapEffect());
this.addAbility(ability);
// Enchanted creature doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
}
public BondsOfQuicksilver (final BondsOfQuicksilver card) {

View file

@ -32,7 +32,7 @@ import mage.MageInt;
import mage.abilities.common.DealtDamageToSourceTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
@ -60,7 +60,7 @@ public class DeepSlumberTitan extends CardImpl {
this.addAbility(new EntersBattlefieldTappedAbility());
// Deep-Slumber Titan doesn't untap during your untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// Whenever Deep-Slumber Titan is dealt damage, untap it.
this.addAbility(new DealtDamageToSourceTriggeredAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), false));

View file

@ -34,7 +34,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.PutCountersSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.effects.common.continious.GainAbilityAttachedEffect;
import mage.abilities.keyword.EnchantAbility;
@ -70,7 +70,7 @@ public class SinkingFeeling extends CardImpl {
this.addAbility(ability);
// Enchanted creature doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
// Enchanted creature has "{1}, Put a -1/-1 counter on this creature: Untap this creature.
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), new ManaCostsImpl("{1}"));

View file

@ -37,7 +37,7 @@ import mage.abilities.effects.Effects;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.DestroyAllControlledTargetEffect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl;
import mage.counters.CounterType;
@ -68,7 +68,7 @@ public class AjaniVengeant extends CardImpl {
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false));
// +1: Target permanent doesn't untap during its controller's next untap step.
LoyaltyAbility ability1 = new LoyaltyAbility(new SkipNextUntapTargetEffect(), 1);
LoyaltyAbility ability1 = new LoyaltyAbility(new DontUntapInControllersNextUntapStepTargetEffect(), 1);
ability1.addTarget(new TargetPermanent());
this.addAbility(ability1);

View file

@ -32,7 +32,7 @@ import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Rarity;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.filter.FilterPermanent;
@ -67,7 +67,7 @@ public class ComaVeil extends CardImpl {
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
// Enchanted permanent doesn't untap during its controller's untap step.
EnchantAbility ability = new EnchantAbility(auraTarget.getTargetName());
ability.addEffect(new SkipEnchantedUntapEffect());
ability.addEffect(new DontUntapInControllersUntapStepEnchantedEffect());
this.addAbility(ability);
}

View file

@ -34,7 +34,7 @@ import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.SkipUntapAllEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.Game;
@ -54,7 +54,7 @@ public class IntruderAlarm extends CardImpl {
this.color.setBlue(true);
// Creatures don't untap during their controllers' untap steps.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, new FilterCreaturePermanent("Creatures"))));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, new FilterCreaturePermanent("Creatures"))));
// Whenever a creature enters the battlefield, untap all creatures.
this.addAbility(new EntersBattlefieldAllTriggeredAbility(new UntapAllCreatureEffect(), new FilterCreaturePermanent()));
}

View file

@ -29,7 +29,7 @@ package mage.sets.tempest;
import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.SkipUntapAllEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Duration;
@ -58,7 +58,7 @@ public class Choke extends CardImpl {
this.color.setGreen(true);
// Islands don't untap during their controllers' untap steps.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, filter)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, filter)));
}
public Choke(final Choke card) {

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.effects.common.SkipNextUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
import mage.abilities.mana.*;
import mage.cards.CardImpl;
@ -49,10 +49,10 @@ public class CinderMarsh extends CardImpl {
this.addAbility(new ColorlessManaAbility());
// {tap}: Add {B} or {R} to your mana pool. Cinder Marsh doesn't untap during your next untap step.
Ability ability = new BlackManaAbility();
ability.addEffect(new SkipNextUntapSourceEffect());
ability.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(ability);
ability = new RedManaAbility();
ability.addEffect(new SkipNextUntapSourceEffect());
ability.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(ability);
}

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.effects.common.SkipNextUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
import mage.abilities.mana.ColorlessManaAbility;
import mage.abilities.mana.GreenManaAbility;
import mage.abilities.mana.RedManaAbility;
@ -51,10 +51,10 @@ public class MoggHollows extends CardImpl {
this.addAbility(new ColorlessManaAbility());
// {tap}: Add {R} or {G} to your mana pool. Mogg Hollows doesn't untap during your next untap step.
Ability ability = new RedManaAbility();
ability.addEffect(new SkipNextUntapSourceEffect());
ability.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(ability);
ability = new GreenManaAbility();
ability.addEffect(new SkipNextUntapSourceEffect());
ability.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(ability);
}

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.effects.common.SkipNextUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
import mage.abilities.mana.BlackManaAbility;
import mage.abilities.mana.BlueManaAbility;
import mage.abilities.mana.ColorlessManaAbility;
@ -51,10 +51,10 @@ public class RootwaterDepths extends CardImpl {
this.addAbility(new ColorlessManaAbility());
// {tap}: Add {U} or {B} to your mana pool. Rootwater Depths doesn't untap during your next untap step.
Ability ability = new BlueManaAbility();
ability.addEffect(new SkipNextUntapSourceEffect());
ability.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(ability);
ability = new BlackManaAbility();
ability.addEffect(new SkipNextUntapSourceEffect());
ability.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(ability);
}

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.effects.common.SkipNextUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
import mage.abilities.mana.BlueManaAbility;
import mage.abilities.mana.ColorlessManaAbility;
import mage.abilities.mana.WhiteManaAbility;
@ -51,10 +51,10 @@ public class ThalakosLowlands extends CardImpl {
this.addAbility(new ColorlessManaAbility());
// {tap}: Add {W} or {U} to your mana pool. Thalakos Lowlands doesn't untap during your next untap step.
Ability ability = new WhiteManaAbility();
ability.addEffect(new SkipNextUntapSourceEffect());
ability.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(ability);
ability = new BlueManaAbility();
ability.addEffect(new SkipNextUntapSourceEffect());
ability.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(ability);
}

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.effects.common.SkipNextUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
import mage.abilities.mana.ColorlessManaAbility;
import mage.abilities.mana.GreenManaAbility;
import mage.abilities.mana.WhiteManaAbility;
@ -51,10 +51,10 @@ public class VecTownships extends CardImpl {
this.addAbility(new ColorlessManaAbility());
// {tap}: Add {G} or {W} to your mana pool. Vec Townships doesn't untap during your next untap step.
Ability ability = new GreenManaAbility();
ability.addEffect(new SkipNextUntapSourceEffect());
ability.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(ability);
ability = new WhiteManaAbility();
ability.addEffect(new SkipNextUntapSourceEffect());
ability.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(ability);
}

View file

@ -34,7 +34,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.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.target.TargetPermanent;
@ -59,7 +59,7 @@ public class Dehydration extends CardImpl {
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
// Enchanted creature doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
}
public Dehydration(final Dehydration card) {

View file

@ -33,7 +33,7 @@ import mage.constants.CardType;
import mage.constants.Rarity;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.cards.CardImpl;
import mage.constants.Zone;
import mage.target.common.TargetCreaturePermanent;
@ -48,7 +48,7 @@ public class BarlsCage extends CardImpl {
this.expansionSetCode = "DRK";
// {3}: Target creature doesn't untap during its controller's next untap step.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SkipNextUntapTargetEffect("Target creature"), new GenericManaCost(3));
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DontUntapInControllersNextUntapStepTargetEffect("Target creature"), new GenericManaCost(3));
ability.addTarget(new TargetCreaturePermanent());
this.addAbility(ability);
}

View file

@ -38,7 +38,7 @@ import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.continious.BoostTargetEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
@ -190,7 +190,7 @@ class TritonTacticsEndOfCombatEffect extends OneShotEffect {
if (attackerSet.contains(CardUtil.getCardZoneString(null, creature.getId(), game))) {
// tap creature and add the not untap effect
creature.tap(game);
ContinuousEffect effect = new SkipNextUntapTargetEffect();
ContinuousEffect effect = new DontUntapInControllersNextUntapStepTargetEffect();
effect.setTargetPointer(new FixedTarget(creature.getId()));
game.addEffect(effect, source);
game.informPlayers(new StringBuilder("Triton Tactics: ").append(creature.getName()).append(" doesn't untap during its controller's next untap step").toString());

View file

@ -30,7 +30,7 @@ package mage.sets.theros;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.abilities.keyword.HeroicAbility;
import mage.cards.CardImpl;
@ -65,7 +65,7 @@ public class WavecrashTriton extends CardImpl {
// Heroic - Whenever you cast a spell that targets Wavecrash Triton, tap target creature an opponent controls. That creature doesn't untap during its controller's next untap step.
Ability ability = new HeroicAbility(new TapTargetEffect());
ability.addTarget(new TargetCreaturePermanent(filter));
ability.addEffect(new SkipNextUntapTargetEffect("That creature"));
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("That creature"));
this.addAbility(ability);
}

View file

@ -33,7 +33,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.constants.CardType;
@ -67,7 +67,7 @@ public class EternitySnare extends CardImpl {
this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1), false));
// Enchanted creature doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
}
public EternitySnare(final EternitySnare card) {

View file

@ -34,7 +34,7 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.ReplacementEffectImpl;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.turn.AddExtraTurnControllerEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
@ -62,7 +62,7 @@ public class TimeVault extends CardImpl {
this.addAbility(new EntersBattlefieldTappedAbility());
// Time Vault doesn't untap during your untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// If you would begin your turn while Time Vault is tapped, you may skip that turn instead. If you do, untap Time Vault.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new TimeVaultReplacementEffect()));

View file

@ -36,7 +36,7 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.SkipUntapSourceEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.mana.SimpleManaAbility;
import mage.cards.CardImpl;
@ -53,7 +53,7 @@ public class GrimMonolith extends CardImpl {
this.expansionSetCode = "ULG";
// Grim Monolith doesn't untap during your untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
// {tap}: Add {3} to your mana pool.
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, Mana.ColorlessMana(3), new TapSourceCost()));
// {4}: Untap Grim Monolith.

View file

@ -29,7 +29,7 @@ package mage.sets.urzassaga;
import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.SkipUntapAllEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Duration;
@ -59,7 +59,7 @@ public class BackToBasics extends CardImpl {
this.color.setBlue(true);
// Nonbasic lands don't untap during their controllers' untap steps.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, filter)));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, filter)));
}
public BackToBasics(final BackToBasics card) {

View file

@ -36,7 +36,7 @@ import mage.abilities.Ability;
import mage.abilities.costs.AlternativeCostImpl;
import mage.abilities.costs.mana.ColoredManaCost;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.cards.CardImpl;
import mage.constants.*;
import mage.game.Game;
@ -163,7 +163,7 @@ class PermafrostTrapEffect extends OneShotEffect {
Permanent creature = game.getPermanent(targetId);
if (creature != null) {
creature.tap(game);
SkipNextUntapTargetEffect effect = new SkipNextUntapTargetEffect();
DontUntapInControllersNextUntapStepTargetEffect effect = new DontUntapInControllersNextUntapStepTargetEffect();
effect.setTargetPointer(new FixedTarget(targetId));
game.addEffect(effect, source);
}

View file

@ -33,7 +33,7 @@ import mage.constants.Rarity;
import mage.constants.TargetController;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
@ -65,7 +65,7 @@ public class KorHookmaster extends CardImpl {
// When Kor Hookmaster enters the battlefield, tap target creature an opponent controls.
// That creature doesn't untap during its controller's next untap step.
EntersBattlefieldTriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new TapTargetEffect());
ability.addEffect(new SkipNextUntapTargetEffect());
ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
ability.addTarget(new TargetCreaturePermanent(filter));
this.addAbility(ability);
}

View file

@ -38,7 +38,7 @@ import mage.abilities.costs.Cost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect;
import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.cards.CardImpl;
import mage.constants.Outcome;
import mage.filter.FilterPermanent;
@ -110,7 +110,7 @@ class LorthosTheTideMakerEffect extends OneShotEffect {
Permanent permanent = game.getPermanent(target);
if (permanent != null) {
permanent.tap(game);
ContinuousEffect effect = new SkipNextUntapTargetEffect();
ContinuousEffect effect = new DontUntapInControllersNextUntapStepTargetEffect();
effect.setTargetPointer(new FixedTarget(permanent.getId()));
game.addEffect(effect, source);
}

View file

@ -34,7 +34,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.SkipEnchantedUntapEffect;
import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
import mage.target.TargetPermanent;
@ -59,7 +59,7 @@ public class ParalyzingGrasp extends CardImpl {
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
// Enchanted creature doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
}
public ParalyzingGrasp(final ParalyzingGrasp card) {

View file

@ -45,8 +45,8 @@ import mage.target.targetpointer.FixedTarget;
public class DealsDamageToACreatureAttachedTriggeredAbility extends TriggeredAbilityImpl {
private boolean combatOnly;
private boolean setTargetPointer;
private String attachedDescription;
private final boolean setTargetPointer;
private final String attachedDescription;
public DealsDamageToACreatureAttachedTriggeredAbility(Effect effect, boolean combatOnly, String attachedDescription, boolean optional, boolean setTargetPointer) {
super(Zone.BATTLEFIELD, effect, optional);

View file

@ -27,8 +27,8 @@
*/
package mage.abilities.common;
import mage.constants.Zone;
import mage.abilities.effects.common.SkipUntapOptionalSourceEffect;
import mage.constants.Zone;
/**
* Implements:

View file

@ -9,23 +9,23 @@ import mage.constants.PhaseStep;
import mage.game.Game;
import mage.game.events.GameEvent;
public class SkipNextUntapSourceEffect extends ContinuousRuleModifiyingEffectImpl {
public class DontUntapInControllersNextUntapStepSourceEffect extends ContinuousRuleModifiyingEffectImpl {
private int validForTurnNum;
public SkipNextUntapSourceEffect() {
public DontUntapInControllersNextUntapStepSourceEffect() {
super(Duration.Custom, Outcome.Detriment, false, true);
staticText = "{this} doesn't untap during your next untap step";
validForTurnNum = 0;
}
public SkipNextUntapSourceEffect(final SkipNextUntapSourceEffect effect) {
public DontUntapInControllersNextUntapStepSourceEffect(final DontUntapInControllersNextUntapStepSourceEffect effect) {
super(effect);
}
@Override
public SkipNextUntapSourceEffect copy() {
return new SkipNextUntapSourceEffect(this);
public DontUntapInControllersNextUntapStepSourceEffect copy() {
return new DontUntapInControllersNextUntapStepSourceEffect(this);
}
@Override
@ -46,10 +46,10 @@ public class SkipNextUntapSourceEffect extends ContinuousRuleModifiyingEffectImp
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
// the check for turn number is needed if multiple effects are added to prevent untap in next untap step
// if we don't check for turn number, every turn only one effect would be used instead of correctly only one time
// to skip the untap effect.
// if we don't check for turn number, every turn only one effect would be used instead of correctly consuming
// all existing skip the next untap step effects.
// Discard effect if related to previous turn
// Discard effect if related to a previous turn
if (validForTurnNum > 0 && validForTurnNum < game.getTurnNum()) {
discard();
return false;
@ -57,7 +57,7 @@ public class SkipNextUntapSourceEffect extends ContinuousRuleModifiyingEffectImp
// remember the turn of the untap step the effect has to be applied
if (GameEvent.EventType.UNTAP_STEP.equals(event.getType())
&& game.getActivePlayerId().equals(source.getControllerId())) {
if (validForTurnNum == game.getTurnNum()) { // the turn has a secon untap step but the effect is already related to the first untap step
if (validForTurnNum == game.getTurnNum()) { // the turn has a second untap step but the effect is already related to the first untap step
discard();
return false;
}
@ -66,6 +66,7 @@ public class SkipNextUntapSourceEffect extends ContinuousRuleModifiyingEffectImp
// skip untap action
if (game.getTurn().getStepType() == PhaseStep.UNTAP
&& event.getType() == GameEvent.EventType.UNTAP
&& game.getActivePlayerId().equals(source.getControllerId())
&& event.getTargetId().equals(source.getSourceId())) {
discard();
return true;

View file

@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
/**
* @author BetaSteward_at_googlemail.com
*/
public class SkipNextUntapTargetEffect extends ContinuousRuleModifiyingEffectImpl {
public class DontUntapInControllersNextUntapStepTargetEffect extends ContinuousRuleModifiyingEffectImpl {
private int validForTurnNum;
@ -53,23 +53,23 @@ public class SkipNextUntapTargetEffect extends ContinuousRuleModifiyingEffectImp
* If this is needed, the validForTurnNum has to be saved per controller.
*
*/
public SkipNextUntapTargetEffect() {
public DontUntapInControllersNextUntapStepTargetEffect() {
super(Duration.Custom, Outcome.Detriment, false, true);
}
public SkipNextUntapTargetEffect(String text) {
public DontUntapInControllersNextUntapStepTargetEffect(String text) {
this();
this.staticText = text;
}
public SkipNextUntapTargetEffect(final SkipNextUntapTargetEffect effect) {
public DontUntapInControllersNextUntapStepTargetEffect(final DontUntapInControllersNextUntapStepTargetEffect effect) {
super(effect);
this.validForTurnNum = effect.validForTurnNum;
}
@Override
public SkipNextUntapTargetEffect copy() {
return new SkipNextUntapTargetEffect(this);
public DontUntapInControllersNextUntapStepTargetEffect copy() {
return new DontUntapInControllersNextUntapStepTargetEffect(this);
}
@Override
@ -93,7 +93,7 @@ public class SkipNextUntapTargetEffect extends ContinuousRuleModifiyingEffectImp
// if we don't check for turn number, every untap step of a turn only one effect would be used instead of correctly only one time
// to skip the untap effect.
// Discard effect if related to previous turn
// Discard effect if it's related to a previous turn
if (validForTurnNum > 0 && validForTurnNum < game.getTurnNum()) {
discard();
return false;
@ -124,9 +124,12 @@ public class SkipNextUntapTargetEffect extends ContinuousRuleModifiyingEffectImp
if (game.getTurn().getStepType() == PhaseStep.UNTAP && event.getType() == EventType.UNTAP) {
if (targetPointer.getTargets(game, source).contains(event.getTargetId())) {
Permanent permanent = game.getPermanent(event.getTargetId());
if (permanent != null && game.getActivePlayerId().equals(permanent.getControllerId())) {
return true;
}
}
}
return false;
}

View file

@ -41,7 +41,6 @@ import static mage.constants.TargetController.YOU;
import mage.filter.FilterPermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
import mage.players.Player;
@ -51,26 +50,26 @@ import mage.players.Player;
* @author LevelX2
*/
public class SkipUntapAllEffect extends ContinuousRuleModifiyingEffectImpl {
public class DontUntapInControllersUntapStepAllEffect extends ContinuousRuleModifiyingEffectImpl {
TargetController targetController;
FilterPermanent filter;
public SkipUntapAllEffect(Duration duration, TargetController targetController, FilterPermanent filter) {
public DontUntapInControllersUntapStepAllEffect(Duration duration, TargetController targetController, FilterPermanent filter) {
super(duration, Outcome.Detriment, false, false);
this.targetController = targetController;
this.filter = filter;
}
public SkipUntapAllEffect(final SkipUntapAllEffect effect) {
public DontUntapInControllersUntapStepAllEffect(final DontUntapInControllersUntapStepAllEffect effect) {
super(effect);
this.targetController = effect.targetController;
this.filter = effect.filter;
}
@Override
public SkipUntapAllEffect copy() {
return new SkipUntapAllEffect(this);
public DontUntapInControllersUntapStepAllEffect copy() {
return new DontUntapInControllersUntapStepAllEffect(this);
}
@Override
@ -80,7 +79,7 @@ public class SkipUntapAllEffect extends ContinuousRuleModifiyingEffectImpl {
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
if (game.getTurn().getStepType() == PhaseStep.UNTAP && event.getType() == EventType.UNTAP) {
if (GameEvent.EventType.UNTAP.equals(event.getType()) && PhaseStep.UNTAP.equals(game.getTurn().getStepType())) {
Permanent permanent = game.getPermanent(event.getTargetId());
if (permanent != null) {
switch(targetController) {
@ -100,7 +99,8 @@ public class SkipUntapAllEffect extends ContinuousRuleModifiyingEffectImpl {
default:
throw new RuntimeException("Type of TargetController not supported!");
}
if (filter.match(permanent, source.getSourceId(), source.getControllerId(), game)) {
if (game.getActivePlayerId().equals(permanent.getControllerId()) && // controller's untap step
filter.match(permanent, source.getSourceId(), source.getControllerId(), game)) {
return true;
}
}
@ -115,17 +115,11 @@ public class SkipUntapAllEffect extends ContinuousRuleModifiyingEffectImpl {
}
StringBuilder sb = new StringBuilder(filter.getMessage()).append(" don't untap during ");
switch(targetController) {
case YOU:
sb.append("your ");
break;
case OPPONENT:
sb.append("your opponents' ");
break;
case ANY:
sb.append("their controllers' ");
sb.append("their controller's ");
break;
default:
throw new RuntimeException("Type of TargetController not supported!");
throw new RuntimeException("Type of TargetController not supported yet!");
}
sb.append("untap steps");
return sb.toString();

View file

@ -12,14 +12,14 @@ import mage.game.permanent.Permanent;
/**
* @author nantuko
*/
public class SkipEnchantedUntapEffect extends ContinuousRuleModifiyingEffectImpl {
public class DontUntapInControllersUntapStepEnchantedEffect extends ContinuousRuleModifiyingEffectImpl {
public SkipEnchantedUntapEffect() {
public DontUntapInControllersUntapStepEnchantedEffect() {
super(Duration.WhileOnBattlefield, Outcome.Detriment, false, true);
staticText = "Enchanted permanent doesn't untap during its controller's untap step";
}
public SkipEnchantedUntapEffect(final SkipEnchantedUntapEffect effect) {
public DontUntapInControllersUntapStepEnchantedEffect(final DontUntapInControllersUntapStepEnchantedEffect effect) {
super(effect);
}
@ -29,8 +29,8 @@ public class SkipEnchantedUntapEffect extends ContinuousRuleModifiyingEffectImpl
}
@Override
public SkipEnchantedUntapEffect copy() {
return new SkipEnchantedUntapEffect(this);
public DontUntapInControllersUntapStepEnchantedEffect copy() {
return new DontUntapInControllersUntapStepEnchantedEffect(this);
}
@Override
@ -48,11 +48,11 @@ public class SkipEnchantedUntapEffect extends ContinuousRuleModifiyingEffectImpl
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
if (game.getTurn().getStepType() == PhaseStep.UNTAP && event.getType() == GameEvent.EventType.UNTAP) {
if (GameEvent.EventType.UNTAP.equals(event.getType()) && PhaseStep.UNTAP.equals(game.getTurn().getStepType())) {
Permanent enchantment = game.getPermanent(source.getSourceId());
if (enchantment != null && enchantment.getAttachedTo() != null) {
if (enchantment != null && enchantment.getAttachedTo() != null && event.getTargetId().equals(enchantment.getAttachedTo())) {
Permanent permanent = game.getPermanent(enchantment.getAttachedTo());
if (permanent != null && event.getTargetId().equals(permanent.getId())) {
if (permanent != null && permanent.getControllerId().equals(game.getActivePlayerId())) {
return true;
}
}

View file

@ -35,25 +35,26 @@ import mage.abilities.effects.ContinuousRuleModifiyingEffectImpl;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
/**
*
* @author North
*/
public class SkipUntapSourceEffect extends ContinuousRuleModifiyingEffectImpl {
public class DontUntapInControllersUntapStepSourceEffect extends ContinuousRuleModifiyingEffectImpl {
public SkipUntapSourceEffect() {
public DontUntapInControllersUntapStepSourceEffect() {
super(Duration.WhileOnBattlefield, Outcome.Detriment, false, true);
staticText = "{this} doesn't untap during your untap step";
}
public SkipUntapSourceEffect(final SkipUntapSourceEffect effect) {
public DontUntapInControllersUntapStepSourceEffect(final DontUntapInControllersUntapStepSourceEffect effect) {
super(effect);
}
@Override
public SkipUntapSourceEffect copy() {
return new SkipUntapSourceEffect(this);
public DontUntapInControllersUntapStepSourceEffect copy() {
return new DontUntapInControllersUntapStepSourceEffect(this);
}
@Override
@ -66,8 +67,11 @@ public class SkipUntapSourceEffect extends ContinuousRuleModifiyingEffectImpl {
if (game.getTurn().getStepType() == PhaseStep.UNTAP
&& event.getType() == EventType.UNTAP
&& event.getTargetId().equals(source.getSourceId())) {
Permanent permanent = game.getPermanent(source.getSourceId());
if (permanent != null && permanent.getControllerId().equals(game.getActivePlayerId())) {
return true;
}
}
return false;
}
}

View file

@ -45,19 +45,19 @@ import mage.game.permanent.Permanent;
*
* @author BetaSteward_at_googlemail.com
*/
public class SkipUntapTargetEffect extends ContinuousRuleModifiyingEffectImpl {
public class DontUntapInControllersUntapStepTargetEffect extends ContinuousRuleModifiyingEffectImpl {
public SkipUntapTargetEffect(Duration duration) {
public DontUntapInControllersUntapStepTargetEffect(Duration duration) {
super(duration, Outcome.Detriment);
}
public SkipUntapTargetEffect(final SkipUntapTargetEffect effect) {
public DontUntapInControllersUntapStepTargetEffect(final DontUntapInControllersUntapStepTargetEffect effect) {
super(effect);
}
@Override
public SkipUntapTargetEffect copy() {
return new SkipUntapTargetEffect(this);
public DontUntapInControllersUntapStepTargetEffect copy() {
return new DontUntapInControllersUntapStepTargetEffect(this);
}
@Override
@ -77,13 +77,16 @@ public class SkipUntapTargetEffect extends ContinuousRuleModifiyingEffectImpl {
@Override
public boolean applies(GameEvent event, Ability source, Game game) {
if (game.getTurn().getStepType() == PhaseStep.UNTAP && event.getType() == EventType.UNTAP) {
if (GameEvent.EventType.UNTAP.equals(event.getType()) && PhaseStep.UNTAP.equals(game.getTurn().getStepType())) {
for (UUID targetId : targetPointer.getTargets(game, source)) {
if (event.getTargetId().equals(targetId)) {
Permanent permanent = game.getPermanent(targetId);
if (permanent != null && game.getActivePlayerId().equals(permanent.getControllerId())) {
return true;
}
}
}
}
return false;
}
@ -92,9 +95,8 @@ public class SkipUntapTargetEffect extends ContinuousRuleModifiyingEffectImpl {
if (staticText != null) {
return staticText;
}
return new StringBuilder("Target ").append(mode.getTargets().get(0).getTargetName())
.append(" doesn't untap ")
.append(getDuration().toString()).toString();
return "Target " + mode.getTargets().get(0).getTargetName()
+ " doesn't untap during its controller's untap step" + (getDuration().toString().isEmpty() ? "":" " + getDuration());
}
}

View file

@ -27,9 +27,9 @@
*/
package mage.abilities.effects.common;
import mage.constants.Duration;
import mage.abilities.Ability;
import mage.abilities.effects.RestrictionEffect;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.game.Game;
import mage.game.permanent.Permanent;
@ -54,13 +54,15 @@ public class SkipUntapOptionalSourceEffect extends RestrictionEffect {
@Override
public boolean applies(Permanent permanent, Ability source, Game game) {
return permanent.getId().equals(source.getSourceId()) && permanent.isTapped();
return permanent.getId().equals(source.getSourceId()) &&
permanent.getControllerId().equals(game.getActivePlayerId()) && // your untap step
permanent.isTapped();
}
@Override
public boolean canBeUntapped(Permanent permanent, Game game) {
Player player = game.getPlayer(permanent.getControllerId());
return player != null && player.chooseUse(Outcome.Benefit, "Untap " + permanent.getName() + "?", game);
return player != null && player.chooseUse(Outcome.Benefit, "Untap " + permanent.getLogName() + "?", game);
}
@Override

View file

@ -73,13 +73,13 @@ public class UntapAllDuringEachOtherPlayersUntapStepEffect extends ContinuousEff
if (!applied && layer.equals(Layer.RulesEffects)) {
if (!game.getActivePlayerId().equals(source.getControllerId()) && game.getStep().getType() == PhaseStep.UNTAP) {
game.getState().setValue(source.getSourceId() + "applied", true);
for (Permanent artifact: game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) {
for (Permanent permanent: game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) {
boolean untap = true;
for (RestrictionEffect effect: game.getContinuousEffects().getApplicableRestrictionEffects(artifact, game).keySet()) {
untap &= effect.canBeUntapped(artifact, game);
for (RestrictionEffect effect: game.getContinuousEffects().getApplicableRestrictionEffects(permanent, game).keySet()) {
untap &= effect.canBeUntapped(permanent, game);
}
if (untap) {
artifact.untap(game);
permanent.untap(game);
}
}
}

View file

@ -866,11 +866,11 @@ public abstract class PermanentImpl extends CardImpl implements Permanent {
}
protected void fireEvent(EventType eventType, Game game) {
game.fireEvent(GameEvent.getEvent(eventType, this.objectId, ownerId));
game.fireEvent(GameEvent.getEvent(eventType, this.objectId, ownerId)); // controllerId seems to me more logical (LevelX2)
}
protected boolean replaceEvent(EventType eventType, Game game) {
return game.replaceEvent(GameEvent.getEvent(eventType, this.objectId, ownerId));
return game.replaceEvent(GameEvent.getEvent(eventType, this.objectId, ownerId));// controllerId seems to me more logical (LevelX2)
}

View file

@ -74,6 +74,8 @@ since 1.3.0-2014-11-29v1
git log 3446953a9d594f324a4b4e36ea13560f1fe2685b..HEAD --diff-filter=A --name-status | sed -ne "s/^A[^u]Mage.Sets\/src\/mage\/sets\///p" | sort > added_cards.txt
since 1.3.0-2014-11-29v2
git log 68f2b65c345d4f16f33f6f23d849d48b1924bbd1..HEAD --diff-filter=A --name-status | sed -ne "s/^A[^u]Mage.Sets\/src\/mage\/sets\///p" | sort > added_cards.txt
since 1.3.0-2014-11-29v3
git log 68fed320f79a43a4af21ed9238b7659df53a008e..HEAD --diff-filter=A --name-status | sed -ne "s/^A[^u]Mage.Sets\/src\/mage\/sets\///p" | sort > added_cards.txt
3. Copy added_cards.txt to trunk\Utils folder
4. Run script: