diff --git a/Mage.Sets/src/mage/sets/alliances/SoldeviExcavations.java b/Mage.Sets/src/mage/sets/alliances/SoldeviExcavations.java index cbf814751bb..a4705db82e3 100644 --- a/Mage.Sets/src/mage/sets/alliances/SoldeviExcavations.java +++ b/Mage.Sets/src/mage/sets/alliances/SoldeviExcavations.java @@ -30,14 +30,13 @@ package mage.sets.alliances; import java.util.UUID; import mage.Mana; import mage.abilities.Ability; -import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleStaticAbility; import mage.abilities.costs.common.SacrificeTargetCost; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.GenericManaCost; import mage.abilities.effects.common.EnterBattlefieldPayCostOrPutGraveyardEffect; -import mage.abilities.effects.common.LookLibraryMayPutToBottomEffect; +import mage.abilities.effects.keyword.ScryEffect; import mage.abilities.mana.SimpleManaAbility; import mage.cards.CardImpl; import mage.constants.CardType; @@ -70,13 +69,12 @@ public class SoldeviExcavations extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.ALL, new EnterBattlefieldPayCostOrPutGraveyardEffect(new SacrificeTargetCost(new TargetControlledPermanent(filter))))); // {tap}: Add {1}{U} to your mana pool. - this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, new Mana(0, 0, 1, 0, 0, 1,0 ), new TapSourceCost())); - // {1}, {tap}: Look at the top card of your library. You may put that card on the bottom of your library. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new LookLibraryMayPutToBottomEffect(), new GenericManaCost(1)); + this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, new Mana(0, 0, 1, 0, 0, 1, 0), new TapSourceCost())); + + // {1}, {tap}: Scry 1. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1), new GenericManaCost(1)); ability.addCost(new TapSourceCost()); this.addAbility(ability); - - } public SoldeviExcavations(final SoldeviExcavations card) { diff --git a/Mage.Sets/src/mage/sets/darksteel/DarksteelPendant.java b/Mage.Sets/src/mage/sets/darksteel/DarksteelPendant.java index c6bb0a5889c..f3e93931423 100644 --- a/Mage.Sets/src/mage/sets/darksteel/DarksteelPendant.java +++ b/Mage.Sets/src/mage/sets/darksteel/DarksteelPendant.java @@ -32,7 +32,7 @@ import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.GenericManaCost; -import mage.abilities.effects.common.LookLibraryMayPutToBottomEffect; +import mage.abilities.effects.keyword.ScryEffect; import mage.abilities.keyword.IndestructibleAbility; import mage.cards.CardImpl; import mage.constants.CardType; @@ -51,8 +51,8 @@ public class DarksteelPendant extends CardImpl { // Darksteel Pendant is indestructible. this.addAbility(IndestructibleAbility.getInstance()); - // {1}, {tap}: Look at the top card of your library. You may put that card on the bottom of your library. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new LookLibraryMayPutToBottomEffect(), new GenericManaCost(1)); + // {1}, {tap}: Scry 1. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ScryEffect(1), new GenericManaCost(1)); ability.addCost(new TapSourceCost()); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/gatecrash/BiomassMutation.java b/Mage.Sets/src/mage/sets/gatecrash/BiomassMutation.java index 434c10e426b..051d2268d04 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/BiomassMutation.java +++ b/Mage.Sets/src/mage/sets/gatecrash/BiomassMutation.java @@ -28,14 +28,13 @@ package mage.sets.gatecrash; import java.util.UUID; - -import mage.constants.CardType; -import mage.constants.Rarity; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.dynamicvalue.common.ManacostVariableValue; import mage.abilities.effects.common.continuous.SetPowerToughnessAllEffect; import mage.cards.CardImpl; +import mage.constants.CardType; import mage.constants.Duration; +import mage.constants.Rarity; import mage.filter.common.FilterControlledCreaturePermanent; /** @@ -49,7 +48,7 @@ public class BiomassMutation extends CardImpl { this.expansionSetCode = "GTC"; - // Creatures you control become X/X until end of turn. + // Creatures you control have base power and toughness X/X until end of turn. DynamicValue variableMana = new ManacostVariableValue(); this.getSpellAbility().addEffect(new SetPowerToughnessAllEffect(variableMana, variableMana, Duration.EndOfTurn, new FilterControlledCreaturePermanent("Creatures you control"), true)); } diff --git a/Mage.Sets/src/mage/sets/invasion/Opt.java b/Mage.Sets/src/mage/sets/invasion/Opt.java index 00a8fe58780..132c5a085a8 100644 --- a/Mage.Sets/src/mage/sets/invasion/Opt.java +++ b/Mage.Sets/src/mage/sets/invasion/Opt.java @@ -29,7 +29,7 @@ package mage.sets.invasion; import java.util.UUID; import mage.abilities.effects.common.DrawCardSourceControllerEffect; -import mage.abilities.effects.common.LookLibraryMayPutToBottomEffect; +import mage.abilities.effects.keyword.ScryEffect; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; @@ -44,9 +44,8 @@ public class Opt extends CardImpl { super(ownerId, 64, "Opt", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{U}"); this.expansionSetCode = "INV"; - - // Look at the top card of your library. You may put that card on the bottom of your library. - this.getSpellAbility().addEffect(new LookLibraryMayPutToBottomEffect()); + // Scry 1. + this.getSpellAbility().addEffect(new ScryEffect(1)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); diff --git a/Mage.Sets/src/mage/sets/magic2014/DarkProphecy.java b/Mage.Sets/src/mage/sets/magic2014/DarkProphecy.java index 416208588f3..fcd3c1e9aa5 100644 --- a/Mage.Sets/src/mage/sets/magic2014/DarkProphecy.java +++ b/Mage.Sets/src/mage/sets/magic2014/DarkProphecy.java @@ -30,6 +30,7 @@ package mage.sets.magic2014; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.DiesCreatureTriggeredAbility; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.cards.CardImpl; @@ -55,9 +56,13 @@ public class DarkProphecy extends CardImpl { this.expansionSetCode = "M14"; - // Whenever a creature you control dies, you draw a card and lose 1 life. - Ability ability = new DiesCreatureTriggeredAbility(new DrawCardSourceControllerEffect(1), false, filter); - ability.addEffect(new LoseLifeSourceControllerEffect(1)); + // Whenever a creature you control dies, you draw a card and you lose 1 life. + Effect effect = new DrawCardSourceControllerEffect(1); + effect.setText("you draw a card"); + Ability ability = new DiesCreatureTriggeredAbility(effect, false, filter); + effect = new LoseLifeSourceControllerEffect(1); + effect.setText("and you lose 1 life"); + ability.addEffect(effect); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/modernmasters/TestOfFaith.java b/Mage.Sets/src/mage/sets/modernmasters/TestOfFaith.java index 4baaf12bab9..40a9ea2a357 100644 --- a/Mage.Sets/src/mage/sets/modernmasters/TestOfFaith.java +++ b/Mage.Sets/src/mage/sets/modernmasters/TestOfFaith.java @@ -50,11 +50,9 @@ public class TestOfFaith extends CardImpl { super(ownerId, 33, "Test of Faith", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{W}"); this.expansionSetCode = "MMA"; - - // Prevent the next 3 damage that would be dealt to target creature this turn, and put a +1/+1 counter on that creature for each 1 damage prevented this way. + // Prevent the next 3 damage that would be dealt to target creature this turn. For each 1 damage prevented this way, put a +1/+1 counter on that creature. this.getSpellAbility().addEffect(new TestOfFaithPreventDamageTargetEffect(Duration.EndOfTurn)); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); - } public TestOfFaith(final TestOfFaith card) { @@ -73,7 +71,7 @@ class TestOfFaithPreventDamageTargetEffect extends PreventionEffectImpl { public TestOfFaithPreventDamageTargetEffect(Duration duration) { super(duration); - staticText = "Prevent the next 3 damage that would be dealt to target creature this turn, and put a +1/+1 counter on that creature for each 1 damage prevented this way"; + staticText = "Prevent the next 3 damage that would be dealt to target creature this turn. For each 1 damage prevented this way, put a +1/+1 counter on that creature"; } public TestOfFaithPreventDamageTargetEffect(final TestOfFaithPreventDamageTargetEffect effect) { diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/ShapeStealer.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/ShapeStealer.java index f0384b087dd..51cddc6978c 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/ShapeStealer.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/ShapeStealer.java @@ -56,13 +56,13 @@ public class ShapeStealer extends CardImpl { this.subtype.add("Spirit"); this.power = new MageInt(1); this.toughness = new MageInt(1); - // This ability triggers once for each creature blocked by or blocking Shape Stealer. // If multiple creatures block it, Shape Stealer's power and toughness will change for // each one in succession. The first trigger put on the stack will be the last to resolve, // so that will set Shape Stealer's final power and toughness. - // Whenever Shape Stealer blocks or becomes blocked by a creature, change Shape Stealer's power and toughness to that creature's power and toughness until end of turn. + + // Whenever Shape Stealer blocks or becomes blocked by a creature, change Shape Stealer's base power and toughness to that creature's power and toughness until end of turn. this.addAbility(new BlocksOrBecomesBlockedByCreatureTriggeredAbility(new ShapeStealerEffect(), false)); } @@ -80,7 +80,7 @@ class ShapeStealerEffect extends OneShotEffect { public ShapeStealerEffect() { super(Outcome.Detriment); - this.staticText = "change {this}'s power and toughness to that creature's power and toughness until end of turn"; + this.staticText = "change {this}'s base power and toughness to that creature's power and toughness until end of turn"; } public ShapeStealerEffect(final ShapeStealerEffect effect) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/MoriokReplica.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/MoriokReplica.java index d8919a383a6..2c94a0706da 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/MoriokReplica.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/MoriokReplica.java @@ -29,17 +29,18 @@ package mage.sets.scarsofmirrodin; import java.util.UUID; -import mage.constants.CardType; -import mage.constants.Rarity; -import mage.constants.Zone; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.SacrificeSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.Effect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.abilities.effects.common.LoseLifeSourceControllerEffect; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; /** * @@ -53,9 +54,15 @@ public class MoriokReplica extends CardImpl { this.subtype.add("Warrior"); this.power = new MageInt(2); this.toughness = new MageInt(2); - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(2), new ManaCostsImpl("{1}{B}")); + + // {1}{B}, Sacrifice Moriok Replica: You draw two cards and you lose 2 life. + Effect effect = new DrawCardSourceControllerEffect(2); + effect.setText("You draw two cards"); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{1}{B}")); + effect = new LoseLifeSourceControllerEffect(2); + effect.setText("and you lose 2 life"); ability.addCost(new SacrificeSourceCost()); - ability.addEffect(new LoseLifeSourceControllerEffect(2)); + ability.addEffect(effect); this.addAbility(ability); } diff --git a/Mage/src/mage/abilities/keyword/BushidoAbility.java b/Mage/src/mage/abilities/keyword/BushidoAbility.java index 30b239ece1a..3d51c036986 100644 --- a/Mage/src/mage/abilities/keyword/BushidoAbility.java +++ b/Mage/src/mage/abilities/keyword/BushidoAbility.java @@ -55,7 +55,7 @@ public class BushidoAbility extends BlocksOrBecomesBlockedTriggeredAbility { } static String getReminder(String xValue) { - return " (When this blocks or becomes blocked, it gets +" + xValue+ "/+" + xValue + " until end of turn.)"; + return " (Whenever this creature blocks or becomes blocked, it gets +" + xValue+ "/+" + xValue + " until end of turn.)"; } public BushidoAbility(final BushidoAbility ability) { diff --git a/Mage/src/mage/abilities/keyword/ChangelingAbility.java b/Mage/src/mage/abilities/keyword/ChangelingAbility.java index f36020d1bf6..94fb1debb65 100644 --- a/Mage/src/mage/abilities/keyword/ChangelingAbility.java +++ b/Mage/src/mage/abilities/keyword/ChangelingAbility.java @@ -29,9 +29,9 @@ package mage.abilities.keyword; import java.io.ObjectStreamException; -import mage.constants.Zone; import mage.abilities.MageSingleton; import mage.abilities.StaticAbility; +import mage.constants.Zone; /** @@ -61,7 +61,7 @@ public class ChangelingAbility extends StaticAbility implements MageSingleton { @Override public String getRule() { - return "Changeling (This card is every creature type at all times.)"; + return "Changeling (This card is every creature type.)"; } @Override diff --git a/Mage/src/mage/abilities/keyword/ProvokeAbility.java b/Mage/src/mage/abilities/keyword/ProvokeAbility.java index 595d85a4a49..94b4c53f65d 100644 --- a/Mage/src/mage/abilities/keyword/ProvokeAbility.java +++ b/Mage/src/mage/abilities/keyword/ProvokeAbility.java @@ -55,7 +55,7 @@ import mage.target.common.TargetCreaturePermanent; public class ProvokeAbility extends AttacksTriggeredAbility { public ProvokeAbility() { - super(new UntapTargetEffect(), true, "Provoke (When this attacks, you may have target creature defending player controls untap and block it if able.)"); + super(new UntapTargetEffect(), true, "Provoke (Whenever this attacks, you may have target creature defending player controls untap and block it if able.)"); this.addEffect(new ProvokeRequirementEffect()); } diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index c0b550a7c16..66cd2ae3041 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -12513,7 +12513,7 @@ Override|Mirrodin|45|C|{2}{U}|Instant|||Counter target spell unless its controll Psychic Membrane|Mirrodin|46|U|{2}{U}|Creature - Wall|0|3|Defender (This creature can't attack.)$Whenever Psychic Membrane blocks, you may draw a card.| Quicksilver Elemental|Mirrodin|47|R|{3}{U}{U}|Creature - Elemental|3|4|{U}: Quicksilver Elemental gains all activated abilities of target creature until end of turn. (If any of the abilities use that creature's name, use this creature's name instead.)$You may spend blue mana as though it were mana of any color to pay the activation costs of Quicksilver Elemental's abilities.| Regress|Mirrodin|48|C|{2}{U}|Instant|||Return target permanent to its owner's hand.| -Shared Fate|Mirrodin|49|R|{4}{U}|Enchantment|||If a player would draw a card, that player exiles the top card of an opponent's library face down instead.$Each player may look at and play cards he or she exiled with Shared Fate.| +Shared Fate|Mirrodin|49|R|{4}{U}|Enchantment|||If a player would draw a card, that player exiles the top card of one of his or her opponents' libraries face down instead.$Each player may look at and play cards he or she exiled with Shared Fate.| Auriok Transfixer|Mirrodin|5|C|{W}|Creature - Human Scout|1|1|{W}, {tap}: Tap target artifact.| Slith Strider|Mirrodin|50|U|{1}{U}{U}|Creature - Slith|1|1|Whenever Slith Strider becomes blocked, draw a card.$Whenever Slith Strider deals combat damage to a player, put a +1/+1 counter on it.| Somber Hoverguard|Mirrodin|51|C|{5}{U}|Creature - Drone|3|2|Affinity for artifacts (This spell costs {1} less to cast for each artifact you control.)$Flying| @@ -15733,7 +15733,7 @@ Zephyr Spirit|Ravnica: City of Guilds|76|C|{5}{U}|Creature - Spirit|0|6|When Zep Blood Funnel|Ravnica: City of Guilds|77|R|{1}{B}|Enchantment|||Noncreature spells you cast cost {2} less to cast.$Whenever you cast a noncreature spell, counter that spell unless you sacrifice a creature.| Brainspoil|Ravnica: City of Guilds|78|C|{3}{B}{B}|Sorcery|||Destroy target creature that isn't enchanted. It can't be regenerated.$Transmute {1}{B}{B} ({1}{B}{B}, Discard this card: Search your library for a card with the same converted mana cost as this card, reveal it, and put it into your hand. Then shuffle your library. Transmute only as a sorcery.)| Carrion Howler|Ravnica: City of Guilds|79|U|{3}{B}|Creature - Zombie Wolf|2|2|Pay 1 life: Carrion Howler gets +2/-1 until end of turn.| -Concerted Effort|Ravnica: City of Guilds|8|R|{2}{W}{W}|Enchantment|||At the beginning of each upkeep, all creatures you control gain flying until end of turn if a creature you control has flying. The same is true for fear, first strike, double strike, landwalk, protection, trample, and vigilance.| +Concerted Effort|Ravnica: City of Guilds|8|R|{2}{W}{W}|Enchantment|||At the beginning of each upkeep, creatures you control gain flying until end of turn if a creature you control has flying. The same is true for fear, first strike, double strike, landwalk, protection, trample, and vigilance.| Clinging Darkness|Ravnica: City of Guilds|80|C|{1}{B}|Enchantment - Aura|||Enchant creature$Enchanted creature gets -4/-1.| Dark Confidant|Ravnica: City of Guilds|81|R|{1}{B}|Creature - Human Wizard|2|1|At the beginning of your upkeep, reveal the top card of your library and put that card into your hand. You lose life equal to its converted mana cost.| Darkblast|Ravnica: City of Guilds|82|U|{B}|Instant|||Target creature gets -1/-1 until end of turn.$Dredge 3 (If you would draw a card, instead you may put exactly three cards from the top of your library into your graveyard. If you do, return this card from your graveyard to your hand. Otherwise, draw a card.)|