* 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.BlocksCreatureAttachedTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost; 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.BoostEquippedEffect;
import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.effects.common.continious.GainAbilityAttachedEffect;
import mage.abilities.keyword.EquipAbility; 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))); 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. // 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} // Equip {2}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(2), new TargetControlledCreaturePermanent())); 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.CardType;
import mage.constants.Rarity; import mage.constants.Rarity;
import mage.abilities.effects.common.DrawCardSourceControllerEffect; 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.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.target.common.TargetCreaturePermanent; 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. // Tap target creature. It doesn't untap during its controller's next untap step.
this.getSpellAbility().addTarget(new TargetCreaturePermanent()); this.getSpellAbility().addTarget(new TargetCreaturePermanent());
this.getSpellAbility().addEffect(new TapTargetEffect()); this.getSpellAbility().addEffect(new TapTargetEffect());
this.getSpellAbility().addEffect(new SkipNextUntapTargetEffect()); this.getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
// Draw a card. // Draw a card.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
} }

View file

@ -34,7 +34,7 @@ import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.DestroySourceEffect; 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.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.Outcome; import mage.constants.Outcome;
@ -66,11 +66,10 @@ public class SpectralPrison extends CardImpl {
TargetPermanent auraTarget = new TargetCreaturePermanent(); TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
// Enchanted creature doesn't untap during its controller's untap step. // Enchanted creature doesn't untap during its controller's untap step.
Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
this.addAbility(ability);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
// When enchanted creature becomes the target of a spell, sacrifice Spectral Prison. // When enchanted creature becomes the target of a spell, sacrifice Spectral Prison.
this.addAbility(new SpectralPrisonAbility()); 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.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.GetEmblemEffect; import mage.abilities.effects.common.GetEmblemEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect; 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.TapTargetEffect;
import mage.abilities.effects.common.continious.MaximumHandSizeControllerEffect; import mage.abilities.effects.common.continious.MaximumHandSizeControllerEffect;
import mage.abilities.effects.common.continious.MaximumHandSizeControllerEffect.HandSizeModification; 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. // +1: Tap target permanent. It doesn't untap during its controller's next untap step.
LoyaltyAbility ability = new LoyaltyAbility(new TapTargetEffect(), 1); LoyaltyAbility ability = new LoyaltyAbility(new TapTargetEffect(), 1);
ability.addEffect(new SkipNextUntapTargetEffect()); ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
Target target = new TargetPermanent(); Target target = new TargetPermanent();
ability.addTarget(target); ability.addTarget(target);
this.addAbility(ability); this.addAbility(ability);

View file

@ -38,7 +38,7 @@ import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.SkipUntapAllEffect; import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.TargetController; import mage.constants.TargetController;
@ -65,7 +65,7 @@ public class HokoriDustDrinker extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// Lands don't untap during their controllers' untap steps. // 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. // 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)); 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.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.DamageTargetEffect; 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.effects.common.TapTargetEffect;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; 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. // 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 = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), false, false, true);
ability.addEffect(new SkipNextUntapTargetEffect("and it")); ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("and it"));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -36,7 +36,7 @@ import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.decorator.ConditionalContinuousRuleModifyingEffect; import mage.abilities.decorator.ConditionalContinuousRuleModifyingEffect;
import mage.abilities.effects.ContinuousRuleModifiyingEffect; import mage.abilities.effects.ContinuousRuleModifiyingEffect;
import mage.abilities.effects.common.LoseLifeTargetEffect; 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.effects.common.TapTargetEffect;
import mage.abilities.keyword.EquipAbility; import mage.abilities.keyword.EquipAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -57,12 +57,13 @@ public class NekoTe extends CardImpl {
this.subtype.add("Equipment"); 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. // 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"); 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()); ConditionalContinuousRuleModifyingEffect effect = new ConditionalContinuousRuleModifyingEffect(skipUntapEffect, new SourceOnBattelfieldCondition());
Ability ability = new DealsDamageToACreatureAttachedTriggeredAbility(new TapTargetEffect("that creature"), false, "equipped creature", false, true); Ability ability = new DealsDamageToACreatureAttachedTriggeredAbility(new TapTargetEffect("that creature"), false, "equipped creature", false, true);
ability.addEffect(effect); ability.addEffect(effect);
this.addAbility(ability); this.addAbility(ability);
// Whenever equipped creature deals damage to a player, that player loses 1 life. // 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)); 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 java.util.UUID;
import mage.abilities.effects.keyword.ScryEffect; 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.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; 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. // 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().addEffect(new TapTargetEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2)); this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2));
this.getSpellAbility().addEffect(new SkipNextUntapTargetEffect()); this.getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
this.getSpellAbility().addEffect(new ScryEffect(1)); this.getSpellAbility().addEffect(new ScryEffect(1));
} }

View file

@ -32,7 +32,7 @@ import java.util.UUID;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Rarity; import mage.constants.Rarity;
import mage.abilities.Ability; 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.BlueManaAbility;
import mage.abilities.mana.ColorlessManaAbility; import mage.abilities.mana.ColorlessManaAbility;
import mage.abilities.mana.WhiteManaAbility; 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. // {T}: Add {W} or {U} to your mana pool. Cloudcrest Lake doesn't untap during your next untap step.
this.addAbility(new ColorlessManaAbility()); this.addAbility(new ColorlessManaAbility());
Ability whiteManaAbility = new WhiteManaAbility(); Ability whiteManaAbility = new WhiteManaAbility();
whiteManaAbility.addEffect(new SkipNextUntapSourceEffect()); whiteManaAbility.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(whiteManaAbility); this.addAbility(whiteManaAbility);
Ability blueManaAbility = new BlueManaAbility(); Ability blueManaAbility = new BlueManaAbility();
blueManaAbility.addEffect(new SkipNextUntapSourceEffect()); blueManaAbility.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(blueManaAbility); this.addAbility(blueManaAbility);
} }

View file

@ -37,7 +37,7 @@ import mage.abilities.common.DealsDamageToACreatureTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.RegenerateSourceEffect; 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.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl; 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. // 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 ability;
ability = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), true, false, true); 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); this.addAbility(ability);
// {1}{G}: Regenerate Kashi-Tribe Reaver. // {1}{G}: Regenerate Kashi-Tribe Reaver.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{1}{G}"))); 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.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToACreatureTriggeredAbility; 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.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl; 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. // 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 ability;
ability = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), true, false, true); 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); this.addAbility(ability);
} }

View file

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

View file

@ -37,7 +37,7 @@ import mage.abilities.common.DealsDamageToACreatureTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.combat.MustBeBlockedByTargetSourceEffect; 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.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.target.common.TargetCreaturePermanent; 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. // 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; Ability ability2;
ability2 = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), true, false, true); 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); this.addAbility(ability2);
} }

View file

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

View file

@ -34,7 +34,7 @@ import mage.constants.Rarity;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToACreatureTriggeredAbility; 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.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl; 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. // 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 ability;
ability = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), true, false, true); 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); this.addAbility(ability);
} }

View file

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

View file

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

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Rarity; import mage.constants.Rarity;
import mage.abilities.Ability; 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.BlackManaAbility;
import mage.abilities.mana.BlueManaAbility; import mage.abilities.mana.BlueManaAbility;
import mage.abilities.mana.ColorlessManaAbility; import mage.abilities.mana.ColorlessManaAbility;
@ -46,12 +46,16 @@ public class WaterveilCavern extends CardImpl {
public WaterveilCavern(UUID ownerId) { public WaterveilCavern(UUID ownerId) {
super(ownerId, 286, "Waterveil Cavern", Rarity.UNCOMMON, new CardType[]{CardType.LAND}, ""); super(ownerId, 286, "Waterveil Cavern", Rarity.UNCOMMON, new CardType[]{CardType.LAND}, "");
this.expansionSetCode = "CHK"; this.expansionSetCode = "CHK";
// Tap: Add 1 to your mana pool.
this.addAbility(new ColorlessManaAbility()); 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(); Ability blueManaAbility = new BlueManaAbility();
blueManaAbility.addEffect(new SkipNextUntapSourceEffect()); blueManaAbility.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(blueManaAbility); this.addAbility(blueManaAbility);
Ability blackManaAbility = new BlackManaAbility(); Ability blackManaAbility = new BlackManaAbility();
blackManaAbility.addEffect(new SkipNextUntapSourceEffect()); blackManaAbility.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(blackManaAbility); this.addAbility(blackManaAbility);
} }

View file

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

View file

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

View file

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

View file

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

View file

@ -37,7 +37,7 @@ import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.AttachEffect; 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.EnchantAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.Outcome; import mage.constants.Outcome;
@ -76,8 +76,8 @@ public class RunnersBane extends CardImpl {
// When Runner's Bane enters the battlefield, tap enchanted creature. // When Runner's Bane enters the battlefield, tap enchanted creature.
this.addAbility(new EntersBattlefieldTriggeredAbility(new RunnersBaneEffect())); this.addAbility(new EntersBattlefieldTriggeredAbility(new RunnersBaneEffect()));
// Enchanted creature doesn't untap during the untap step. // Enchanted creature doesn't untap during its controller's the untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect())); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
} }
public RunnersBane(final RunnersBane card) { 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.costs.common.TapTargetCost;
import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.DynamicValue;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; 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.UntapSourceEffect;
import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect; import mage.abilities.effects.common.continious.SetPowerToughnessSourceEffect;
import mage.abilities.keyword.TrampleAbility; 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))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SetPowerToughnessSourceEffect(amount, Duration.WhileOnBattlefield)));
// Altar Golem doesn't untap during your untap step. // 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. // 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)))); 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.ObjectColor;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.common.SpellCastControllerTriggeredAbility; 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.abilities.effects.common.UntapSourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.filter.FilterSpell; import mage.filter.FilterSpell;
@ -64,7 +64,7 @@ public class NettleSentinel extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Nettle Sentinel doesn't untap during your untap step. // 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. // Whenever you cast a green spell, you may untap Nettle Sentinel.
this.addAbility(new SpellCastControllerTriggeredAbility(new UntapSourceEffect(), filter, true)); this.addAbility(new SpellCastControllerTriggeredAbility(new UntapSourceEffect(), filter, true));
} }

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility; import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; 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.effects.common.UntapSourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
@ -54,7 +54,7 @@ public class BatteredGolem extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// Battered Golem doesn't untap during your untap step. // 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. // Whenever an artifact enters the battlefield, you may untap Battered Golem.
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), new FilterArtifactPermanent("an artifact"), true)); 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.condition.common.IsStepCondition;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalActivatedAbility; 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.effects.common.UntapSourceEffect;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -61,7 +61,7 @@ public class ColossusOfSardia extends CardImpl {
this.addAbility(TrampleAbility.getInstance()); this.addAbility(TrampleAbility.getInstance());
// Colossus of Sardia doesn't untap during your untap step. // 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. // {9}: Untap Colossus of Sardia. Activate this ability only during your upkeep.
this.addAbility(new ConditionalActivatedAbility(Zone.BATTLEFIELD, 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.common.SimpleStaticAbility;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.DoIfCostPaid; 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.effects.common.UntapSourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
@ -56,7 +56,7 @@ public class BrassMan extends CardImpl {
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
// Brass Man doesn't untap during your untap step. // 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. // At the beginning of your upkeep, you may pay {1}. If you do, untap Brass Man.
this.addAbility(new BeginningOfUpkeepTriggeredAbility( this.addAbility(new BeginningOfUpkeepTriggeredAbility(
Zone.BATTLEFIELD, Zone.BATTLEFIELD,

View file

@ -32,7 +32,7 @@ import java.util.UUID;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Rarity; import mage.constants.Rarity;
import mage.abilities.effects.common.CipherEffect; 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.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.TargetController; 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. //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 TapTargetEffect());
this.getSpellAbility().addEffect(new SkipNextUntapTargetEffect()); this.getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
//Cipher //Cipher
this.getSpellAbility().addEffect(new CipherEffect()); 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.Effect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DoIfCostPaid; 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.UntapEnchantedEffect;
import mage.abilities.effects.common.continious.BoostEnchantedEffect; import mage.abilities.effects.common.continious.BoostEnchantedEffect;
import mage.abilities.effects.common.continious.SourceEffect; 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. // 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)); 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"); effect.setText("and doesn't untap during its controller's untap step");
ability.addEffect(effect); ability.addEffect(effect);
this.addAbility(ability); this.addAbility(ability);

View file

@ -34,7 +34,7 @@ import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.SkipUntapAllEffect; import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Duration; 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. // When Wrath of Marit Lage enters the battlefield, tap all red creatures.
this.addAbility(new EntersBattlefieldTriggeredAbility(new TapAllEffect())); this.addAbility(new EntersBattlefieldTriggeredAbility(new TapAllEffect()));
// Red creatures don't untap during their controllers' untap steps. // 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) { public WrathOfMaritLage(final WrathOfMaritLage card) {

View file

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

View file

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

View file

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

View file

@ -37,7 +37,7 @@ import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.ReturnToHandSourceEffect; 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.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.Outcome; import mage.constants.Outcome;
@ -63,11 +63,10 @@ public class Shackles extends CardImpl {
TargetPermanent auraTarget = new TargetCreaturePermanent(); TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
// Enchanted creature doesn't untap during its controller's untap step. // Enchanted creature doesn't untap during its controller's untap step.
Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
this.addAbility(ability);
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipEnchantedUntapEffect()));
// {W}: Return Shackles to its owner's hand. // {W}: Return Shackles to its owner's hand.
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandSourceEffect(true), new ManaCostsImpl("{W}"))); 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.ContinuousEffect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.PreventAllDamageByAllEffect; import mage.abilities.effects.common.PreventAllDamageByAllEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect; import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
@ -101,7 +101,7 @@ class TangleEffect extends OneShotEffect {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
if (controller != null) { if (controller != null) {
for (Permanent permanent :game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) { 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())); effect.setTargetPointer(new FixedTarget(permanent.getId()));
game.addEffect(effect, source); game.addEffect(effect, source);
} }

View file

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

View file

@ -33,7 +33,7 @@ import mage.abilities.common.SpellCastControllerTriggeredAbility;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DoIfCostPaid; 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.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; 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. // 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?"); 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"); effect.setText("and it doesn't untap during its controller's next untap step");
doIfCostPaid.addEffect(effect); doIfCostPaid.addEffect(effect);
Ability ability = new SpellCastControllerTriggeredAbility(doIfCostPaid, filterNonCreature, false); 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.costs.mana.GenericManaCost;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect; 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.TapEnchantedEffect;
import mage.abilities.effects.common.UntapSourceEffect; import mage.abilities.effects.common.UntapSourceEffect;
import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; 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. // When Singing Bell Strike enters the battlefield, tap enchanted creature.
this.addAbility(new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect())); this.addAbility(new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect()));
// Enchanted creature doesn't untap during its controller's untap step. // 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." // Enchanted creature has "{6}: Untap this creature."
Ability gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), new GenericManaCost(6)); Ability gainedAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), new GenericManaCost(6));
Effect effect = new GainAbilityAttachedEffect(gainedAbility, AttachmentType.AURA, Duration.WhileOnBattlefield); 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.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.GenericManaCost; 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.effects.common.UntapSourceEffect;
import mage.abilities.mana.SimpleManaAbility; import mage.abilities.mana.SimpleManaAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -52,7 +52,7 @@ public class BasaltMonolith extends CardImpl {
this.expansionSetCode = "LEA"; this.expansionSetCode = "LEA";
// Basalt Monolith doesn't untap during your untap step. // 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. // {tap}: Add {3} to your mana pool.
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, new Mana(0,0,0,0,0,3,0),new TapSourceCost())); this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, new Mana(0,0,0,0,0,3,0),new TapSourceCost()));
// {3}: Untap Basalt Monolith. // {3}: Untap Basalt Monolith.

View file

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

View file

@ -29,7 +29,7 @@ package mage.sets.limitedalpha;
import java.util.UUID; import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.SkipUntapAllEffect; import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
@ -57,7 +57,7 @@ public class Meekstone extends CardImpl {
this.expansionSetCode = "LEA"; this.expansionSetCode = "LEA";
// Creatures with power 3 or greater don't untap during their controllers' untap steps. // 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) { public Meekstone(final Meekstone card) {

View file

@ -67,7 +67,7 @@ public class Paralyze extends CardImpl {
// When Paralyze enters the battlefield, tap enchanted creature. // When Paralyze enters the battlefield, tap enchanted creature.
this.addAbility(new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect())); this.addAbility(new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect()));
// Enchanted creature doesn't untap during its controller's untap step. // 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. // 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)); 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 java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.common.SkipNextUntapTargetEffect; import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect; import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
@ -99,7 +99,7 @@ class EntanglingClashTriggeredAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) { public boolean checkTrigger(GameEvent event, Game game) {
if (EventType.CLASHED.equals(event.getType()) && event.getPlayerId().equals(getControllerId())) { if (EventType.CLASHED.equals(event.getType()) && event.getPlayerId().equals(getControllerId())) {
if (event.getFlag()) { // clash won if (event.getFlag()) { // clash won
addEffect(new SkipNextUntapTargetEffect("that creature")); addEffect(new DontUntapInControllersNextUntapStepTargetEffect("that creature"));
} }
return true; return true;
} }

View file

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

View file

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

View file

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

View file

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

View file

@ -36,7 +36,7 @@ import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.costs.mana.GenericManaCost;
import mage.abilities.effects.common.CounterUnlessPaysEffect; 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.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.game.Game; import mage.game.Game;
@ -115,7 +115,7 @@ class FrostTitanAbility2 extends TriggeredAbilityImpl {
public FrostTitanAbility2() { public FrostTitanAbility2() {
super(Zone.BATTLEFIELD, new TapTargetEffect(), false); super(Zone.BATTLEFIELD, new TapTargetEffect(), false);
this.addEffect(new SkipNextUntapTargetEffect()); this.addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
this.addTarget(new TargetPermanent()); 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.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.DamageTargetEffect; import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.SkipNextUntapSourceEffect; import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.Zone; import mage.constants.Zone;
import mage.target.common.TargetAttackingOrBlockingCreature; 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 ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(3), new ManaCostsImpl("{2}{W}"));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addTarget(new TargetAttackingOrBlockingCreature()); ability.addTarget(new TargetAttackingOrBlockingCreature());
ability.addEffect(new SkipNextUntapSourceEffect()); ability.addEffect(new DontUntapInControllersNextUntapStepSourceEffect());
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -30,7 +30,7 @@ package mage.sets.magic2012;
import java.util.UUID; import java.util.UUID;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Rarity; import mage.constants.Rarity;
import mage.abilities.effects.common.SkipNextUntapTargetEffect; import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.abilities.effects.common.TapTargetEffect; import mage.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.target.common.TargetCreaturePermanent; 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. // 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().addEffect(new TapTargetEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2)); this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2));
this.getSpellAbility().addEffect(new SkipNextUntapTargetEffect()); this.getSpellAbility().addEffect(new DontUntapInControllersNextUntapStepTargetEffect());
} }
public FrostBreath(final FrostBreath card) { 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.Effect;
import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.CantActivateAbilitiesAttachedEffect; 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.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
@ -74,7 +74,7 @@ public class Encrust extends CardImpl {
this.addAbility(ability); this.addAbility(ability);
// Enchanted permanent doesn't untap during its controller's untap step and its activated abilities can't be activated. // 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 effect = new CantActivateAbilitiesAttachedEffect();
effect.setText("and its activated abilities can't be activated"); effect.setText("and its activated abilities can't be activated");
ability.addEffect(effect); ability.addEffect(effect);

View file

@ -31,7 +31,7 @@ import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; 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.abilities.effects.common.TapTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; 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. // 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 ability = new EntersBattlefieldTriggeredAbility(new TapTargetEffect(), false);
ability.addEffect(new SkipNextUntapTargetEffect("It")); ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("It"));
ability.addTarget(new TargetCreaturePermanent(filter)); ability.addTarget(new TargetCreaturePermanent(filter));
this.addAbility(ability); this.addAbility(ability);
} }

View file

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

View file

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

View file

@ -32,7 +32,7 @@ import mage.MageInt;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.TapForManaAllTriggeredManaAbility; import mage.abilities.common.TapForManaAllTriggeredManaAbility;
import mage.abilities.effects.common.AddManaOfAnyColorTargetCanProduceEffect; 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.abilities.keyword.TrampleAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; 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."; 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() { public VorinclexTriggeredAbility2() {
super(Zone.BATTLEFIELD, new SkipNextUntapTargetEffect()); super(Zone.BATTLEFIELD, new DontUntapInControllersNextUntapStepTargetEffect());
} }
public VorinclexTriggeredAbility2(VorinclexTriggeredAbility2 ability) { 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.common.DiscardTargetCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.AttachEffect; 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.UntapSourceEffect;
import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.effects.common.continious.GainAbilityAttachedEffect;
import mage.abilities.keyword.EnchantAbility; 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. // Enchanted creature doesn't untap during its controller's untap step.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
new GainAbilityAttachedEffect(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipUntapSourceEffect()), new GainAbilityAttachedEffect(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()),
AttachmentType.AURA, AttachmentType.AURA,
Duration.WhileOnBattlefield,"Enchanted creature doesn't untap during its controller's untap step."))); 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.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.common.DamageTargetEffect; 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.abilities.effects.common.UntapSourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.target.common.TargetCreatureOrPlayer; import mage.target.common.TargetCreatureOrPlayer;
@ -59,7 +59,7 @@ public class GoblinSharpshooter extends CardImpl {
this.toughness = new MageInt(1); this.toughness = new MageInt(1);
// Goblin Sharpshooter doesn't untap during your untap step. // 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. // Whenever a creature dies, untap Goblin Sharpshooter.
this.addAbility(new DiesCreatureTriggeredAbility(new UntapSourceEffect(), false)); this.addAbility(new DiesCreatureTriggeredAbility(new UntapSourceEffect(), false));
// {tap}: Goblin Sharpshooter deals 1 damage to target creature or player. // {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.Ability;
import mage.abilities.effects.ContinuousEffect; import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.SkipNextUntapTargetEffect; import mage.abilities.effects.common.DontUntapInControllersNextUntapStepTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
@ -99,7 +99,7 @@ class ExhaustionEffect extends OneShotEffect {
Player player = game.getPlayer(source.getFirstTarget()); Player player = game.getPlayer(source.getFirstTarget());
if (player != null) { if (player != null) {
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, player.getId(), game)) { for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, player.getId(), game)) {
ContinuousEffect effect = new SkipNextUntapTargetEffect(); ContinuousEffect effect = new DontUntapInControllersNextUntapStepTargetEffect();
effect.setTargetPointer(new FixedTarget(permanent.getId())); effect.setTargetPointer(new FixedTarget(permanent.getId()));
game.addEffect(effect, source); game.addEffect(effect, source);
} }

View file

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

View file

@ -35,7 +35,7 @@ import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToACreatureTriggeredAbility; import mage.abilities.common.DealsDamageToACreatureTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility; 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.TapTargetEffect;
import mage.abilities.effects.common.continious.GainAbilityControlledEffect; import mage.abilities.effects.common.continious.GainAbilityControlledEffect;
import mage.abilities.keyword.ShroudAbility; 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. // 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 ability;
ability = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), true, false, true); 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); this.addAbility(ability);
} }

View file

@ -36,7 +36,7 @@ import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToACreatureTriggeredAbility; import mage.abilities.common.DealsDamageToACreatureTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl; 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.TapTargetEffect;
import mage.abilities.effects.common.continious.GainAbilitySourceEffect; import mage.abilities.effects.common.continious.GainAbilitySourceEffect;
import mage.abilities.keyword.ReachAbility; 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. // 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 ability;
ability = new DealsDamageToACreatureTriggeredAbility(new TapTargetEffect("that creature"), true, false, true); 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); this.addAbility(ability);
// {G}: Matsu-Tribe Birdstalker gains reach until end of turn. (It can block creatures with flying.) // {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.CardType;
import mage.constants.Rarity; import mage.constants.Rarity;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect; 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.EnchantAbility;
import mage.abilities.keyword.FlashAbility; import mage.abilities.keyword.FlashAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.Zone;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
@ -54,13 +56,19 @@ public class BondsOfQuicksilver extends CardImpl {
this.subtype.add("Aura"); this.subtype.add("Aura");
this.color.setBlue(true); this.color.setBlue(true);
// Flash (You may cast this spell any time you could cast an instant.)
this.addAbility(FlashAbility.getInstance()); this.addAbility(FlashAbility.getInstance());
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent(); TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget); this.getSpellAbility().addTarget(auraTarget);
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment)); this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
Ability ability = new EnchantAbility(auraTarget.getTargetName()); Ability ability = new EnchantAbility(auraTarget.getTargetName());
ability.addEffect(new SkipEnchantedUntapEffect());
this.addAbility(ability); 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) { public BondsOfQuicksilver (final BondsOfQuicksilver card) {

View file

@ -32,7 +32,7 @@ import mage.MageInt;
import mage.abilities.common.DealtDamageToSourceTriggeredAbility; import mage.abilities.common.DealtDamageToSourceTriggeredAbility;
import mage.abilities.common.EntersBattlefieldTappedAbility; import mage.abilities.common.EntersBattlefieldTappedAbility;
import mage.abilities.common.SimpleStaticAbility; 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.effects.common.UntapSourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
@ -60,7 +60,7 @@ public class DeepSlumberTitan extends CardImpl {
this.addAbility(new EntersBattlefieldTappedAbility()); this.addAbility(new EntersBattlefieldTappedAbility());
// Deep-Slumber Titan doesn't untap during your untap step. // 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. // Whenever Deep-Slumber Titan is dealt damage, untap it.
this.addAbility(new DealtDamageToSourceTriggeredAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), false)); 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.common.PutCountersSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.AttachEffect; 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.UntapSourceEffect;
import mage.abilities.effects.common.continious.GainAbilityAttachedEffect; import mage.abilities.effects.common.continious.GainAbilityAttachedEffect;
import mage.abilities.keyword.EnchantAbility; import mage.abilities.keyword.EnchantAbility;
@ -70,7 +70,7 @@ public class SinkingFeeling extends CardImpl {
this.addAbility(ability); this.addAbility(ability);
// Enchanted creature doesn't untap during its controller's untap step. // 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. // 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}")); 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.DamageTargetEffect;
import mage.abilities.effects.common.DestroyAllControlledTargetEffect; import mage.abilities.effects.common.DestroyAllControlledTargetEffect;
import mage.abilities.effects.common.GainLifeEffect; 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.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.counters.CounterType; import mage.counters.CounterType;
@ -68,7 +68,7 @@ public class AjaniVengeant extends CardImpl {
this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false)); this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.LOYALTY.createInstance(3)), false));
// +1: Target permanent doesn't untap during its controller's next untap step. // +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()); ability1.addTarget(new TargetPermanent());
this.addAbility(ability1); this.addAbility(ability1);

View file

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

View file

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

View file

@ -29,7 +29,7 @@ package mage.sets.tempest;
import java.util.UUID; import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.SkipUntapAllEffect; import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
@ -58,7 +58,7 @@ public class Choke extends CardImpl {
this.color.setGreen(true); this.color.setGreen(true);
// Islands don't untap during their controllers' untap steps. // 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) { public Choke(final Choke card) {

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -38,7 +38,7 @@ import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; 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.abilities.effects.common.continious.BoostTargetEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
@ -190,7 +190,7 @@ class TritonTacticsEndOfCombatEffect extends OneShotEffect {
if (attackerSet.contains(CardUtil.getCardZoneString(null, creature.getId(), game))) { if (attackerSet.contains(CardUtil.getCardZoneString(null, creature.getId(), game))) {
// tap creature and add the not untap effect // tap creature and add the not untap effect
creature.tap(game); creature.tap(game);
ContinuousEffect effect = new SkipNextUntapTargetEffect(); ContinuousEffect effect = new DontUntapInControllersNextUntapStepTargetEffect();
effect.setTargetPointer(new FixedTarget(creature.getId())); effect.setTargetPointer(new FixedTarget(creature.getId()));
game.addEffect(effect, source); 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()); 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 java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; 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.effects.common.TapTargetEffect;
import mage.abilities.keyword.HeroicAbility; import mage.abilities.keyword.HeroicAbility;
import mage.cards.CardImpl; 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. // 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 ability = new HeroicAbility(new TapTargetEffect());
ability.addTarget(new TargetCreaturePermanent(filter)); ability.addTarget(new TargetCreaturePermanent(filter));
ability.addEffect(new SkipNextUntapTargetEffect("That creature")); ability.addEffect(new DontUntapInControllersNextUntapStepTargetEffect("That creature"));
this.addAbility(ability); this.addAbility(ability);
} }

View file

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

View file

@ -34,7 +34,7 @@ import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.effects.ReplacementEffectImpl; 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.abilities.effects.common.turn.AddExtraTurnControllerEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
@ -62,7 +62,7 @@ public class TimeVault extends CardImpl {
this.addAbility(new EntersBattlefieldTappedAbility()); this.addAbility(new EntersBattlefieldTappedAbility());
// Time Vault doesn't untap during your untap step. // 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. // 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())); 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.common.SimpleStaticAbility;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; 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.effects.common.UntapSourceEffect;
import mage.abilities.mana.SimpleManaAbility; import mage.abilities.mana.SimpleManaAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
@ -53,7 +53,7 @@ public class GrimMonolith extends CardImpl {
this.expansionSetCode = "ULG"; this.expansionSetCode = "ULG";
// Grim Monolith doesn't untap during your untap step. // 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. // {tap}: Add {3} to your mana pool.
this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, Mana.ColorlessMana(3), new TapSourceCost())); this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, Mana.ColorlessMana(3), new TapSourceCost()));
// {4}: Untap Grim Monolith. // {4}: Untap Grim Monolith.

View file

@ -29,7 +29,7 @@ package mage.sets.urzassaga;
import java.util.UUID; import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility; import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.SkipUntapAllEffect; import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
@ -59,7 +59,7 @@ public class BackToBasics extends CardImpl {
this.color.setBlue(true); this.color.setBlue(true);
// Nonbasic lands don't untap during their controllers' untap steps. // 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) { public BackToBasics(final BackToBasics card) {

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -44,7 +44,7 @@ import mage.game.permanent.Permanent;
/** /**
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
*/ */
public class SkipNextUntapTargetEffect extends ContinuousRuleModifiyingEffectImpl { public class DontUntapInControllersNextUntapStepTargetEffect extends ContinuousRuleModifiyingEffectImpl {
private int validForTurnNum; private int validForTurnNum;
@ -53,23 +53,23 @@ public class SkipNextUntapTargetEffect extends ContinuousRuleModifiyingEffectImp
* If this is needed, the validForTurnNum has to be saved per controller. * If this is needed, the validForTurnNum has to be saved per controller.
* *
*/ */
public SkipNextUntapTargetEffect() { public DontUntapInControllersNextUntapStepTargetEffect() {
super(Duration.Custom, Outcome.Detriment, false, true); super(Duration.Custom, Outcome.Detriment, false, true);
} }
public SkipNextUntapTargetEffect(String text) { public DontUntapInControllersNextUntapStepTargetEffect(String text) {
this(); this();
this.staticText = text; this.staticText = text;
} }
public SkipNextUntapTargetEffect(final SkipNextUntapTargetEffect effect) { public DontUntapInControllersNextUntapStepTargetEffect(final DontUntapInControllersNextUntapStepTargetEffect effect) {
super(effect); super(effect);
this.validForTurnNum = effect.validForTurnNum; this.validForTurnNum = effect.validForTurnNum;
} }
@Override @Override
public SkipNextUntapTargetEffect copy() { public DontUntapInControllersNextUntapStepTargetEffect copy() {
return new SkipNextUntapTargetEffect(this); return new DontUntapInControllersNextUntapStepTargetEffect(this);
} }
@Override @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 // 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. // 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()) { if (validForTurnNum > 0 && validForTurnNum < game.getTurnNum()) {
discard(); discard();
return false; return false;
@ -124,7 +124,10 @@ public class SkipNextUntapTargetEffect extends ContinuousRuleModifiyingEffectImp
if (game.getTurn().getStepType() == PhaseStep.UNTAP && event.getType() == EventType.UNTAP) { if (game.getTurn().getStepType() == PhaseStep.UNTAP && event.getType() == EventType.UNTAP) {
if (targetPointer.getTargets(game, source).contains(event.getTargetId())) { if (targetPointer.getTargets(game, source).contains(event.getTargetId())) {
return true; Permanent permanent = game.getPermanent(event.getTargetId());
if (permanent != null && game.getActivePlayerId().equals(permanent.getControllerId())) {
return true;
}
} }
} }
return false; return false;

View file

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

View file

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

View file

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

View file

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

View file

@ -27,9 +27,9 @@
*/ */
package mage.abilities.effects.common; package mage.abilities.effects.common;
import mage.constants.Duration;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.RestrictionEffect; import mage.abilities.effects.RestrictionEffect;
import mage.constants.Duration;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
@ -54,13 +54,15 @@ public class SkipUntapOptionalSourceEffect extends RestrictionEffect {
@Override @Override
public boolean applies(Permanent permanent, Ability source, Game game) { 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 @Override
public boolean canBeUntapped(Permanent permanent, Game game) { public boolean canBeUntapped(Permanent permanent, Game game) {
Player player = game.getPlayer(permanent.getControllerId()); 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 @Override

View file

@ -73,13 +73,13 @@ public class UntapAllDuringEachOtherPlayersUntapStepEffect extends ContinuousEff
if (!applied && layer.equals(Layer.RulesEffects)) { if (!applied && layer.equals(Layer.RulesEffects)) {
if (!game.getActivePlayerId().equals(source.getControllerId()) && game.getStep().getType() == PhaseStep.UNTAP) { if (!game.getActivePlayerId().equals(source.getControllerId()) && game.getStep().getType() == PhaseStep.UNTAP) {
game.getState().setValue(source.getSourceId() + "applied", true); 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; boolean untap = true;
for (RestrictionEffect effect: game.getContinuousEffects().getApplicableRestrictionEffects(artifact, game).keySet()) { for (RestrictionEffect effect: game.getContinuousEffects().getApplicableRestrictionEffects(permanent, game).keySet()) {
untap &= effect.canBeUntapped(artifact, game); untap &= effect.canBeUntapped(permanent, game);
} }
if (untap) { 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) { 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) { 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 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 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 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 3. Copy added_cards.txt to trunk\Utils folder
4. Run script: 4. Run script: